﻿2026-06-20T03:13:20.9781722Z ##[group]Run ./traceable-reqs check --json
2026-06-20T03:13:20.9782107Z [36;1m./traceable-reqs check --json[0m
2026-06-20T03:13:20.9794784Z shell: /usr/bin/bash -e {0}
2026-06-20T03:13:20.9795049Z ##[endgroup]
2026-06-20T03:13:21.0023835Z {
2026-06-20T03:13:21.0024395Z   "schemaVersion": 1,
2026-06-20T03:13:21.0024850Z   "summary": {
2026-06-20T03:13:21.0025269Z     "requirementCount": 271,
2026-06-20T03:13:21.0025747Z     "completeCount": 271,
2026-06-20T03:13:21.0026199Z     "incompleteCount": 0,
2026-06-20T03:13:21.0026630Z     "findingCount": 0
2026-06-20T03:13:21.0027034Z   },
2026-06-20T03:13:21.0027393Z   "requirements": [
2026-06-20T03:13:21.0027788Z     {
2026-06-20T03:13:21.0028170Z       "id": "REQ-API-1",
2026-06-20T03:13:21.0028765Z       "title": "api prefix and adapter_name on every machinery invocation",
2026-06-20T03:13:21.0029539Z       "requiredStages": [
2026-06-20T03:13:21.0030005Z         "impl",
2026-06-20T03:13:21.0030388Z         "unit",
2026-06-20T03:13:21.0030766Z         "int"
2026-06-20T03:13:21.0031190Z       ],
2026-06-20T03:13:21.0031547Z       "stages": {
2026-06-20T03:13:21.0031924Z         "doc": {
2026-06-20T03:13:21.0032325Z           "complete": false,
2026-06-20T03:13:21.0032776Z           "evidence": []
2026-06-20T03:13:21.0033180Z         },
2026-06-20T03:13:21.0033551Z         "impl": {
2026-06-20T03:13:21.0033953Z           "complete": true,
2026-06-20T03:13:21.0034382Z           "evidence": [
2026-06-20T03:13:21.0034791Z             {
2026-06-20T03:13:21.0035197Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T03:13:21.0035744Z               "line": 15
2026-06-20T03:13:21.0036096Z             }
2026-06-20T03:13:21.0036401Z           ]
2026-06-20T03:13:21.0036716Z         },
2026-06-20T03:13:21.0037022Z         "int": {
2026-06-20T03:13:21.0037351Z           "complete": true,
2026-06-20T03:13:21.0037726Z           "evidence": [
2026-06-20T03:13:21.0038081Z             {
2026-06-20T03:13:21.0038459Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-20T03:13:21.0038935Z               "line": 13
2026-06-20T03:13:21.0039350Z             }
2026-06-20T03:13:21.0039664Z           ]
2026-06-20T03:13:21.0039961Z         },
2026-06-20T03:13:21.0040261Z         "unit": {
2026-06-20T03:13:21.0040603Z           "complete": true,
2026-06-20T03:13:21.0040973Z           "evidence": [
2026-06-20T03:13:21.0041306Z             {
2026-06-20T03:13:21.0041670Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T03:13:21.0042089Z               "line": 717
2026-06-20T03:13:21.0042436Z             },
2026-06-20T03:13:21.0042751Z             {
2026-06-20T03:13:21.0043108Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T03:13:21.0043544Z               "line": 804
2026-06-20T03:13:21.0043883Z             }
2026-06-20T03:13:21.0044188Z           ]
2026-06-20T03:13:21.0044503Z         }
2026-06-20T03:13:21.0044803Z       }
2026-06-20T03:13:21.0045108Z     },
2026-06-20T03:13:21.0045399Z     {
2026-06-20T03:13:21.0045723Z       "id": "REQ-API-2",
2026-06-20T03:13:21.0046272Z       "title": "The api subcommand surface (bind/listen/poll/state/worker/boundary/...)",
2026-06-20T03:13:21.0046848Z       "requiredStages": [
2026-06-20T03:13:21.0047187Z         "impl",
2026-06-20T03:13:21.0047492Z         "unit",
2026-06-20T03:13:21.0047793Z         "int"
2026-06-20T03:13:21.0048094Z       ],
2026-06-20T03:13:21.0048406Z       "stages": {
2026-06-20T03:13:21.0048728Z         "doc": {
2026-06-20T03:13:21.0049124Z           "complete": false,
2026-06-20T03:13:21.0049477Z           "evidence": []
2026-06-20T03:13:21.0049829Z         },
2026-06-20T03:13:21.0050126Z         "impl": {
2026-06-20T03:13:21.0050473Z           "complete": true,
2026-06-20T03:13:21.0050836Z           "evidence": [
2026-06-20T03:13:21.0051158Z             {
2026-06-20T03:13:21.0051538Z               "path": "crates/spt-store/src/history.rs",
2026-06-20T03:13:21.0051968Z               "line": 17
2026-06-20T03:13:21.0052587Z             },
2026-06-20T03:13:21.0052888Z             {
2026-06-20T03:13:21.0053484Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T03:13:21.0053920Z               "line": 20
2026-06-20T03:13:21.0054253Z             },
2026-06-20T03:13:21.0054558Z             {
2026-06-20T03:13:21.0054901Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T03:13:21.0055325Z               "line": 142
2026-06-20T03:13:21.0055659Z             },
2026-06-20T03:13:21.0055969Z             {
2026-06-20T03:13:21.0056328Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.0056756Z               "line": 24
2026-06-20T03:13:21.0057094Z             },
2026-06-20T03:13:21.0057385Z             {
2026-06-20T03:13:21.0057738Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.0058171Z               "line": 41
2026-06-20T03:13:21.0058486Z             },
2026-06-20T03:13:21.0058799Z             {
2026-06-20T03:13:21.0059255Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.0059704Z               "line": 213
2026-06-20T03:13:21.0060051Z             },
2026-06-20T03:13:21.0060352Z             {
2026-06-20T03:13:21.0060705Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.0061124Z               "line": 255
2026-06-20T03:13:21.0061464Z             },
2026-06-20T03:13:21.0061771Z             {
2026-06-20T03:13:21.0062118Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.0062546Z               "line": 334
2026-06-20T03:13:21.0062895Z             },
2026-06-20T03:13:21.0063199Z             {
2026-06-20T03:13:21.0063519Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.0063815Z               "line": 397
2026-06-20T03:13:21.0064153Z             },
2026-06-20T03:13:21.0064447Z             {
2026-06-20T03:13:21.0064818Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.0065279Z               "line": 436
2026-06-20T03:13:21.0065629Z             },
2026-06-20T03:13:21.0065928Z             {
2026-06-20T03:13:21.0066287Z               "path": "crates/spt/src/api/worker.rs",
2026-06-20T03:13:21.0066706Z               "line": 17
2026-06-20T03:13:21.0067039Z             },
2026-06-20T03:13:21.0067340Z             {
2026-06-20T03:13:21.0067692Z               "path": "crates/spt/src/api/worker.rs",
2026-06-20T03:13:21.0068134Z               "line": 30
2026-06-20T03:13:21.0068464Z             },
2026-06-20T03:13:21.0068774Z             {
2026-06-20T03:13:21.0069200Z               "path": "crates/spt/src/api/worker.rs",
2026-06-20T03:13:21.0069611Z               "line": 63
2026-06-20T03:13:21.0069935Z             },
2026-06-20T03:13:21.0070240Z             {
2026-06-20T03:13:21.0070597Z               "path": "crates/spt/src/api/worker.rs",
2026-06-20T03:13:21.0071016Z               "line": 77
2026-06-20T03:13:21.0071345Z             }
2026-06-20T03:13:21.0071655Z           ]
2026-06-20T03:13:21.0071947Z         },
2026-06-20T03:13:21.0072246Z         "int": {
2026-06-20T03:13:21.0072591Z           "complete": true,
2026-06-20T03:13:21.0072959Z           "evidence": [
2026-06-20T03:13:21.0073297Z             {
2026-06-20T03:13:21.0073573Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-20T03:13:21.0073860Z               "line": 14
2026-06-20T03:13:21.0074084Z             },
2026-06-20T03:13:21.0074295Z             {
2026-06-20T03:13:21.0074552Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-20T03:13:21.0074851Z               "line": 187
2026-06-20T03:13:21.0075073Z             }
2026-06-20T03:13:21.0075278Z           ]
2026-06-20T03:13:21.0075482Z         },
2026-06-20T03:13:21.0075683Z         "unit": {
2026-06-20T03:13:21.0075913Z           "complete": true,
2026-06-20T03:13:21.0076159Z           "evidence": [
2026-06-20T03:13:21.0076384Z             {
2026-06-20T03:13:21.0076646Z               "path": "crates/spt-store/src/history.rs",
2026-06-20T03:13:21.0077104Z               "line": 82
2026-06-20T03:13:21.0077327Z             },
2026-06-20T03:13:21.0077534Z             {
2026-06-20T03:13:21.0077924Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T03:13:21.0078210Z               "line": 279
2026-06-20T03:13:21.0078434Z             },
2026-06-20T03:13:21.0078628Z             {
2026-06-20T03:13:21.0078877Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.0079244Z               "line": 709
2026-06-20T03:13:21.0079473Z             },
2026-06-20T03:13:21.0081853Z             {
2026-06-20T03:13:21.0082125Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.0082420Z               "line": 720
2026-06-20T03:13:21.0082642Z             },
2026-06-20T03:13:21.0082848Z             {
2026-06-20T03:13:21.0083095Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.0083386Z               "line": 873
2026-06-20T03:13:21.0083615Z             },
2026-06-20T03:13:21.0083819Z             {
2026-06-20T03:13:21.0084096Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.0084392Z               "line": 919
2026-06-20T03:13:21.0084626Z             },
2026-06-20T03:13:21.0084831Z             {
2026-06-20T03:13:21.0085078Z               "path": "crates/spt/src/api/worker.rs",
2026-06-20T03:13:21.0085368Z               "line": 143
2026-06-20T03:13:21.0085587Z             },
2026-06-20T03:13:21.0085790Z             {
2026-06-20T03:13:21.0086033Z               "path": "crates/spt/src/api/worker.rs",
2026-06-20T03:13:21.0086324Z               "line": 187
2026-06-20T03:13:21.0086544Z             }
2026-06-20T03:13:21.0086873Z           ]
2026-06-20T03:13:21.0087183Z         }
2026-06-20T03:13:21.0087479Z       }
2026-06-20T03:13:21.0087761Z     },
2026-06-20T03:13:21.0088042Z     {
2026-06-20T03:13:21.0088364Z       "id": "REQ-API-3",
2026-06-20T03:13:21.0088813Z       "title": "commune/signoff are file-drops, not commands",
2026-06-20T03:13:21.0089376Z       "requiredStages": [
2026-06-20T03:13:21.0089729Z         "impl",
2026-06-20T03:13:21.0090048Z         "unit",
2026-06-20T03:13:21.0090349Z         "int"
2026-06-20T03:13:21.0090661Z       ],
2026-06-20T03:13:21.0090960Z       "stages": {
2026-06-20T03:13:21.0091269Z         "doc": {
2026-06-20T03:13:21.0091623Z           "complete": false,
2026-06-20T03:13:21.0091980Z           "evidence": []
2026-06-20T03:13:21.0092568Z         },
2026-06-20T03:13:21.0093019Z         "impl": {
2026-06-20T03:13:21.0093505Z           "complete": true,
2026-06-20T03:13:21.0094036Z           "evidence": [
2026-06-20T03:13:21.0094495Z             {
2026-06-20T03:13:21.0095081Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-20T03:13:21.0095667Z               "line": 27
2026-06-20T03:13:21.0096137Z             },
2026-06-20T03:13:21.0096679Z             {
2026-06-20T03:13:21.0124457Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.0125133Z               "line": 566
2026-06-20T03:13:21.0125546Z             }
2026-06-20T03:13:21.0125947Z           ]
2026-06-20T03:13:21.0126294Z         },
2026-06-20T03:13:21.0126671Z         "int": {
2026-06-20T03:13:21.0127087Z           "complete": true,
2026-06-20T03:13:21.0127529Z           "evidence": [
2026-06-20T03:13:21.0127935Z             {
2026-06-20T03:13:21.0128423Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-20T03:13:21.0129071Z               "line": 261
2026-06-20T03:13:21.0129500Z             }
2026-06-20T03:13:21.0129853Z           ]
2026-06-20T03:13:21.0130230Z         },
2026-06-20T03:13:21.0130600Z         "unit": {
2026-06-20T03:13:21.0131011Z           "complete": true,
2026-06-20T03:13:21.0131448Z           "evidence": [
2026-06-20T03:13:21.0131859Z             {
2026-06-20T03:13:21.0132308Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-20T03:13:21.0132850Z               "line": 280
2026-06-20T03:13:21.0133268Z             },
2026-06-20T03:13:21.0133635Z             {
2026-06-20T03:13:21.0134107Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.0134965Z               "line": 948
2026-06-20T03:13:21.0135404Z             }
2026-06-20T03:13:21.0135877Z           ]
2026-06-20T03:13:21.0136196Z         }
2026-06-20T03:13:21.0136507Z       }
2026-06-20T03:13:21.0136822Z     },
2026-06-20T03:13:21.0137136Z     {
2026-06-20T03:13:21.0137455Z       "id": "REQ-API-4",
2026-06-20T03:13:21.0140514Z       "title": "api resolves the adapter manifest (+ profile + install dir) from `--adapter name:profile` via the registry when `--manifest` is omitted; `--manifest` becomes an optional OVERRIDE (unregistered / local-dev manifests). Removes the require-both-flags redundancy — a registered adapter's live bringup / digest / capability needs only `--adapter` — and yields the precise install dir (the record's source_dir) rather than the --manifest parent, closing the copy-mode psyche-binary edge (v0.8.0)",
2026-06-20T03:13:21.0142896Z       "requiredStages": [
2026-06-20T03:13:21.0143253Z         "doc",
2026-06-20T03:13:21.0143603Z         "impl",
2026-06-20T03:13:21.0143927Z         "unit"
2026-06-20T03:13:21.0144261Z       ],
2026-06-20T03:13:21.0144566Z       "stages": {
2026-06-20T03:13:21.0144895Z         "doc": {
2026-06-20T03:13:21.0145262Z           "complete": true,
2026-06-20T03:13:21.0145650Z           "evidence": [
2026-06-20T03:13:21.0145989Z             {
2026-06-20T03:13:21.0146320Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.0146700Z               "line": 149
2026-06-20T03:13:21.0147038Z             }
2026-06-20T03:13:21.0147324Z           ]
2026-06-20T03:13:21.0147630Z         },
2026-06-20T03:13:21.0147926Z         "impl": {
2026-06-20T03:13:21.0148250Z           "complete": true,
2026-06-20T03:13:21.0148603Z           "evidence": [
2026-06-20T03:13:21.0148939Z             {
2026-06-20T03:13:21.0149371Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T03:13:21.0149805Z               "line": 484
2026-06-20T03:13:21.0150149Z             }
2026-06-20T03:13:21.0150444Z           ]
2026-06-20T03:13:21.0150740Z         },
2026-06-20T03:13:21.0151025Z         "int": {
2026-06-20T03:13:21.0151360Z           "complete": false,
2026-06-20T03:13:21.0151745Z           "evidence": []
2026-06-20T03:13:21.0152074Z         },
2026-06-20T03:13:21.0152385Z         "unit": {
2026-06-20T03:13:21.0152660Z           "complete": true,
2026-06-20T03:13:21.0152898Z           "evidence": [
2026-06-20T03:13:21.0153118Z             {
2026-06-20T03:13:21.0153367Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T03:13:21.0156695Z               "line": 657
2026-06-20T03:13:21.0157164Z             },
2026-06-20T03:13:21.0157484Z             {
2026-06-20T03:13:21.0157765Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T03:13:21.0158094Z               "line": 681
2026-06-20T03:13:21.0158356Z             },
2026-06-20T03:13:21.0158585Z             {
2026-06-20T03:13:21.0158858Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T03:13:21.0159385Z               "line": 705
2026-06-20T03:13:21.0159664Z             }
2026-06-20T03:13:21.0159907Z           ]
2026-06-20T03:13:21.0160113Z         }
2026-06-20T03:13:21.0160326Z       }
2026-06-20T03:13:21.0160532Z     },
2026-06-20T03:13:21.0160748Z     {
2026-06-20T03:13:21.0160975Z       "id": "REQ-ARCH-1",
2026-06-20T03:13:21.0161290Z       "title": "Many small acyclically-layered crates",
2026-06-20T03:13:21.0161639Z       "requiredStages": [
2026-06-20T03:13:21.0161906Z         "impl"
2026-06-20T03:13:21.0162138Z       ],
2026-06-20T03:13:21.0162348Z       "stages": {
2026-06-20T03:13:21.0162591Z         "doc": {
2026-06-20T03:13:21.0162834Z           "complete": false,
2026-06-20T03:13:21.0163106Z           "evidence": []
2026-06-20T03:13:21.0163354Z         },
2026-06-20T03:13:21.0163584Z         "impl": {
2026-06-20T03:13:21.0163830Z           "complete": true,
2026-06-20T03:13:21.0164107Z           "evidence": [
2026-06-20T03:13:21.0164355Z             {
2026-06-20T03:13:21.0164630Z               "path": "crates/spt-msg/src/lib.rs",
2026-06-20T03:13:21.0165134Z               "line": 18
2026-06-20T03:13:21.0165382Z             },
2026-06-20T03:13:21.0165739Z             {
2026-06-20T03:13:21.0165992Z               "path": "crates/spt-proto/src/lib.rs",
2026-06-20T03:13:21.0166283Z               "line": 12
2026-06-20T03:13:21.0166503Z             },
2026-06-20T03:13:21.0166722Z             {
2026-06-20T03:13:21.0166975Z               "path": "crates/spt-store/src/lib.rs",
2026-06-20T03:13:21.0167260Z               "line": 12
2026-06-20T03:13:21.0167478Z             }
2026-06-20T03:13:21.0167686Z           ]
2026-06-20T03:13:21.0167887Z         },
2026-06-20T03:13:21.0168078Z         "int": {
2026-06-20T03:13:21.0168305Z           "complete": false,
2026-06-20T03:13:21.0168583Z           "evidence": []
2026-06-20T03:13:21.0168807Z         },
2026-06-20T03:13:21.0169070Z         "unit": {
2026-06-20T03:13:21.0169303Z           "complete": false,
2026-06-20T03:13:21.0169555Z           "evidence": []
2026-06-20T03:13:21.0169780Z         }
2026-06-20T03:13:21.0169998Z       }
2026-06-20T03:13:21.0170176Z     },
2026-06-20T03:13:21.0170373Z     {
2026-06-20T03:13:21.0170591Z       "id": "REQ-ARCH-2",
2026-06-20T03:13:21.0170921Z       "title": "Public SDK surface is spt-proto, spt-runtime, spt-msg",
2026-06-20T03:13:21.0171274Z       "requiredStages": [
2026-06-20T03:13:21.0171512Z         "impl"
2026-06-20T03:13:21.0171717Z       ],
2026-06-20T03:13:21.0171923Z       "stages": {
2026-06-20T03:13:21.0172132Z         "doc": {
2026-06-20T03:13:21.0172355Z           "complete": false,
2026-06-20T03:13:21.0172605Z           "evidence": []
2026-06-20T03:13:21.0172832Z         },
2026-06-20T03:13:21.0173027Z         "impl": {
2026-06-20T03:13:21.0173266Z           "complete": true,
2026-06-20T03:13:21.0173505Z           "evidence": [
2026-06-20T03:13:21.0173723Z             {
2026-06-20T03:13:21.0173991Z               "path": "crates/spt-runtime/src/lib.rs",
2026-06-20T03:13:21.0174262Z               "line": 18
2026-06-20T03:13:21.0174483Z             }
2026-06-20T03:13:21.0174696Z           ]
2026-06-20T03:13:21.0174896Z         },
2026-06-20T03:13:21.0175095Z         "int": {
2026-06-20T03:13:21.0175322Z           "complete": false,
2026-06-20T03:13:21.0175565Z           "evidence": []
2026-06-20T03:13:21.0175785Z         },
2026-06-20T03:13:21.0175985Z         "unit": {
2026-06-20T03:13:21.0176214Z           "complete": false,
2026-06-20T03:13:21.0176462Z           "evidence": []
2026-06-20T03:13:21.0176686Z         }
2026-06-20T03:13:21.0176881Z       }
2026-06-20T03:13:21.0177073Z     },
2026-06-20T03:13:21.0177258Z     {
2026-06-20T03:13:21.0177458Z       "id": "REQ-ARCH-3",
2026-06-20T03:13:21.0177829Z       "title": "Wire-protocol version independent of crate semver, N-1 compat window",
2026-06-20T03:13:21.0178208Z       "requiredStages": [
2026-06-20T03:13:21.0178437Z         "impl",
2026-06-20T03:13:21.0178653Z         "unit"
2026-06-20T03:13:21.0178847Z       ],
2026-06-20T03:13:21.0179105Z       "stages": {
2026-06-20T03:13:21.0179320Z         "doc": {
2026-06-20T03:13:21.0179554Z           "complete": false,
2026-06-20T03:13:21.0179801Z           "evidence": []
2026-06-20T03:13:21.0180025Z         },
2026-06-20T03:13:21.0180222Z         "impl": {
2026-06-20T03:13:21.0180443Z           "complete": true,
2026-06-20T03:13:21.0180680Z           "evidence": [
2026-06-20T03:13:21.0180894Z             {
2026-06-20T03:13:21.0181152Z               "path": "crates/spt-proto/src/version.rs",
2026-06-20T03:13:21.0181438Z               "line": 34
2026-06-20T03:13:21.0181653Z             },
2026-06-20T03:13:21.0181863Z             {
2026-06-20T03:13:21.0182115Z               "path": "crates/spt-proto/src/version.rs",
2026-06-20T03:13:21.0182401Z               "line": 41
2026-06-20T03:13:21.0182620Z             }
2026-06-20T03:13:21.0182812Z           ]
2026-06-20T03:13:21.0183011Z         },
2026-06-20T03:13:21.0183212Z         "int": {
2026-06-20T03:13:21.0183440Z           "complete": false,
2026-06-20T03:13:21.0183683Z           "evidence": []
2026-06-20T03:13:21.0184016Z         },
2026-06-20T03:13:21.0184217Z         "unit": {
2026-06-20T03:13:21.0184441Z           "complete": true,
2026-06-20T03:13:21.0184785Z           "evidence": [
2026-06-20T03:13:21.0185005Z             {
2026-06-20T03:13:21.0185256Z               "path": "crates/spt-proto/src/version.rs",
2026-06-20T03:13:21.0185537Z               "line": 51
2026-06-20T03:13:21.0185760Z             },
2026-06-20T03:13:21.0185969Z             {
2026-06-20T03:13:21.0186211Z               "path": "crates/spt-proto/src/version.rs",
2026-06-20T03:13:21.0186492Z               "line": 71
2026-06-20T03:13:21.0186717Z             },
2026-06-20T03:13:21.0186928Z             {
2026-06-20T03:13:21.0187174Z               "path": "crates/spt-proto/src/version.rs",
2026-06-20T03:13:21.0187456Z               "line": 83
2026-06-20T03:13:21.0187676Z             }
2026-06-20T03:13:21.0187872Z           ]
2026-06-20T03:13:21.0188071Z         }
2026-06-20T03:13:21.0188263Z       }
2026-06-20T03:13:21.0188456Z     },
2026-06-20T03:13:21.0188651Z     {
2026-06-20T03:13:21.0188869Z       "id": "REQ-ARCH-4",
2026-06-20T03:13:21.0189304Z       "title": "Copy-verbatim the commodity layer from the sister project",
2026-06-20T03:13:21.0189674Z       "requiredStages": [
2026-06-20T03:13:21.0189899Z         "impl",
2026-06-20T03:13:21.0190119Z         "unit"
2026-06-20T03:13:21.0190327Z       ],
2026-06-20T03:13:21.0190520Z       "stages": {
2026-06-20T03:13:21.0190734Z         "doc": {
2026-06-20T03:13:21.0190952Z           "complete": false,
2026-06-20T03:13:21.0191194Z           "evidence": []
2026-06-20T03:13:21.0191407Z         },
2026-06-20T03:13:21.0191598Z         "impl": {
2026-06-20T03:13:21.0191818Z           "complete": true,
2026-06-20T03:13:21.0192061Z           "evidence": [
2026-06-20T03:13:21.0192274Z             {
2026-06-20T03:13:21.0192523Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T03:13:21.0192813Z               "line": 165
2026-06-20T03:13:21.0193034Z             },
2026-06-20T03:13:21.0193243Z             {
2026-06-20T03:13:21.0193495Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T03:13:21.0193781Z               "line": 188
2026-06-20T03:13:21.0194010Z             },
2026-06-20T03:13:21.0194214Z             {
2026-06-20T03:13:21.0194462Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T03:13:21.0194749Z               "line": 208
2026-06-20T03:13:21.0194969Z             },
2026-06-20T03:13:21.0195172Z             {
2026-06-20T03:13:21.0195416Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T03:13:21.0195707Z               "line": 223
2026-06-20T03:13:21.0195932Z             },
2026-06-20T03:13:21.0196145Z             {
2026-06-20T03:13:21.0196400Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T03:13:21.0196691Z               "line": 273
2026-06-20T03:13:21.0196920Z             }
2026-06-20T03:13:21.0197119Z           ]
2026-06-20T03:13:21.0197325Z         },
2026-06-20T03:13:21.0197535Z         "int": {
2026-06-20T03:13:21.0197773Z           "complete": false,
2026-06-20T03:13:21.0198026Z           "evidence": []
2026-06-20T03:13:21.0198255Z         },
2026-06-20T03:13:21.0198466Z         "unit": {
2026-06-20T03:13:21.0198698Z           "complete": true,
2026-06-20T03:13:21.0199011Z           "evidence": [
2026-06-20T03:13:21.0199234Z             {
2026-06-20T03:13:21.0199487Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T03:13:21.0199778Z               "line": 334
2026-06-20T03:13:21.0200006Z             },
2026-06-20T03:13:21.0200221Z             {
2026-06-20T03:13:21.0200469Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T03:13:21.0200755Z               "line": 344
2026-06-20T03:13:21.0200984Z             },
2026-06-20T03:13:21.0201198Z             {
2026-06-20T03:13:21.0201437Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T03:13:21.0201726Z               "line": 355
2026-06-20T03:13:21.0201953Z             },
2026-06-20T03:13:21.0202162Z             {
2026-06-20T03:13:21.0202525Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T03:13:21.0202810Z               "line": 366
2026-06-20T03:13:21.0203121Z             },
2026-06-20T03:13:21.0203332Z             {
2026-06-20T03:13:21.0203570Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T03:13:21.0203851Z               "line": 378
2026-06-20T03:13:21.0204070Z             },
2026-06-20T03:13:21.0204286Z             {
2026-06-20T03:13:21.0204527Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T03:13:21.0204808Z               "line": 391
2026-06-20T03:13:21.0205032Z             },
2026-06-20T03:13:21.0205238Z             {
2026-06-20T03:13:21.0205481Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T03:13:21.0205761Z               "line": 402
2026-06-20T03:13:21.0205976Z             },
2026-06-20T03:13:21.0206183Z             {
2026-06-20T03:13:21.0206435Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T03:13:21.0206714Z               "line": 419
2026-06-20T03:13:21.0206941Z             },
2026-06-20T03:13:21.0207141Z             {
2026-06-20T03:13:21.0207394Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T03:13:21.0207674Z               "line": 547
2026-06-20T03:13:21.0207904Z             }
2026-06-20T03:13:21.0208100Z           ]
2026-06-20T03:13:21.0208295Z         }
2026-06-20T03:13:21.0208486Z       }
2026-06-20T03:13:21.0208682Z     },
2026-06-20T03:13:21.0226533Z     {
2026-06-20T03:13:21.0226801Z       "id": "REQ-CLI-1",
2026-06-20T03:13:21.0228195Z       "title": "spt endpoint noun namespace: absorbs fork/suspend/wake/shutdown/rename/stop/digest + access (ported 1:1: allow|revoke|open|list, decision 21) + description (ex-resources blurb; bare=show, set=author); merged endpoint list [--local|--subnet <name>] grouped by subnet with SELF pinned, --detail adding the ex-resources yellow-pages blurb projection; bare spt endpoint = the list (M8 decisions 1-2, 25)",
2026-06-20T03:13:21.0229497Z       "requiredStages": [
2026-06-20T03:13:21.0229764Z         "impl",
2026-06-20T03:13:21.0229973Z         "unit"
2026-06-20T03:13:21.0230180Z       ],
2026-06-20T03:13:21.0230389Z       "stages": {
2026-06-20T03:13:21.0230602Z         "doc": {
2026-06-20T03:13:21.0230826Z           "complete": false,
2026-06-20T03:13:21.0231077Z           "evidence": []
2026-06-20T03:13:21.0231295Z         },
2026-06-20T03:13:21.0231496Z         "impl": {
2026-06-20T03:13:21.0231716Z           "complete": true,
2026-06-20T03:13:21.0231953Z           "evidence": [
2026-06-20T03:13:21.0232163Z             {
2026-06-20T03:13:21.0232403Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0232680Z               "line": 225
2026-06-20T03:13:21.0232912Z             },
2026-06-20T03:13:21.0233113Z             {
2026-06-20T03:13:21.0233340Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0233614Z               "line": 1093
2026-06-20T03:13:21.0233839Z             },
2026-06-20T03:13:21.0234035Z             {
2026-06-20T03:13:21.0234273Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0234553Z               "line": 1720
2026-06-20T03:13:21.0234788Z             },
2026-06-20T03:13:21.0234989Z             {
2026-06-20T03:13:21.0235222Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0235489Z               "line": 3124
2026-06-20T03:13:21.0235707Z             }
2026-06-20T03:13:21.0235910Z           ]
2026-06-20T03:13:21.0236107Z         },
2026-06-20T03:13:21.0236299Z         "int": {
2026-06-20T03:13:21.0236527Z           "complete": false,
2026-06-20T03:13:21.0236774Z           "evidence": []
2026-06-20T03:13:21.0237000Z         },
2026-06-20T03:13:21.0237196Z         "unit": {
2026-06-20T03:13:21.0237418Z           "complete": true,
2026-06-20T03:13:21.0237652Z           "evidence": [
2026-06-20T03:13:21.0237863Z             {
2026-06-20T03:13:21.0238101Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0238376Z               "line": 7947
2026-06-20T03:13:21.0238612Z             }
2026-06-20T03:13:21.0239046Z           ]
2026-06-20T03:13:21.0239251Z         }
2026-06-20T03:13:21.0239447Z       }
2026-06-20T03:13:21.0239739Z     },
2026-06-20T03:13:21.0239928Z     {
2026-06-20T03:13:21.0240124Z       "id": "REQ-CLI-2",
2026-06-20T03:13:21.0241012Z       "title": "spt daemon noun: run|stop|status (hidden daemon verb becomes daemon run; agent-endpoint shutdown keeps its name under endpoint); daemon status renders the pump heartbeat (last-tick recency) so a half-dead daemon is never rendered implied-healthy (M8 decisions 5, 23)",
2026-06-20T03:13:21.0241865Z       "requiredStages": [
2026-06-20T03:13:21.0242105Z         "impl",
2026-06-20T03:13:21.0242295Z         "unit"
2026-06-20T03:13:21.0242495Z       ],
2026-06-20T03:13:21.0242691Z       "stages": {
2026-06-20T03:13:21.0242895Z         "doc": {
2026-06-20T03:13:21.0243120Z           "complete": false,
2026-06-20T03:13:21.0243368Z           "evidence": []
2026-06-20T03:13:21.0243583Z         },
2026-06-20T03:13:21.0243781Z         "impl": {
2026-06-20T03:13:21.0244005Z           "complete": true,
2026-06-20T03:13:21.0244242Z           "evidence": [
2026-06-20T03:13:21.0244465Z             {
2026-06-20T03:13:21.0244718Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.0245010Z               "line": 414
2026-06-20T03:13:21.0245234Z             },
2026-06-20T03:13:21.0245424Z             {
2026-06-20T03:13:21.0245681Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-20T03:13:21.0245977Z               "line": 97
2026-06-20T03:13:21.0246203Z             },
2026-06-20T03:13:21.0246407Z             {
2026-06-20T03:13:21.0246653Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-20T03:13:21.0246939Z               "line": 256
2026-06-20T03:13:21.0247164Z             },
2026-06-20T03:13:21.0247373Z             {
2026-06-20T03:13:21.0247616Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0247889Z               "line": 434
2026-06-20T03:13:21.0248113Z             },
2026-06-20T03:13:21.0248322Z             {
2026-06-20T03:13:21.0248556Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0248841Z               "line": 1174
2026-06-20T03:13:21.0249121Z             },
2026-06-20T03:13:21.0249330Z             {
2026-06-20T03:13:21.0249563Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0249830Z               "line": 1958
2026-06-20T03:13:21.0250055Z             },
2026-06-20T03:13:21.0250260Z             {
2026-06-20T03:13:21.0250479Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0250746Z               "line": 2047
2026-06-20T03:13:21.0250957Z             },
2026-06-20T03:13:21.0251156Z             {
2026-06-20T03:13:21.0251394Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0251667Z               "line": 2108
2026-06-20T03:13:21.0251875Z             }
2026-06-20T03:13:21.0252068Z           ]
2026-06-20T03:13:21.0252259Z         },
2026-06-20T03:13:21.0252458Z         "int": {
2026-06-20T03:13:21.0252688Z           "complete": false,
2026-06-20T03:13:21.0252936Z           "evidence": []
2026-06-20T03:13:21.0253165Z         },
2026-06-20T03:13:21.0253365Z         "unit": {
2026-06-20T03:13:21.0253585Z           "complete": true,
2026-06-20T03:13:21.0253824Z           "evidence": [
2026-06-20T03:13:21.0254042Z             {
2026-06-20T03:13:21.0254285Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-20T03:13:21.0254569Z               "line": 338
2026-06-20T03:13:21.0254783Z             },
2026-06-20T03:13:21.0254973Z             {
2026-06-20T03:13:21.0255193Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0255470Z               "line": 8102
2026-06-20T03:13:21.0255693Z             }
2026-06-20T03:13:21.0255899Z           ]
2026-06-20T03:13:21.0256100Z         }
2026-06-20T03:13:21.0256289Z       }
2026-06-20T03:13:21.0256480Z     },
2026-06-20T03:13:21.0256677Z     {
2026-06-20T03:13:21.0256895Z       "id": "REQ-CLI-3",
2026-06-20T03:13:21.0257806Z       "title": "Agent hot path stays flat across the M8 reorg: send/ring/ready/whoami/how-to unchanged; notify moves to subnet notify while notif stays top-level; breaking renames land clean with no deprecation shims (zero external CLI consumers pre-spt-claude-code) (M8 decisions 3-4, 9)",
2026-06-20T03:13:21.0258878Z       "requiredStages": [
2026-06-20T03:13:21.0259183Z         "impl",
2026-06-20T03:13:21.0259397Z         "unit"
2026-06-20T03:13:21.0259597Z       ],
2026-06-20T03:13:21.0259795Z       "stages": {
2026-06-20T03:13:21.0260010Z         "doc": {
2026-06-20T03:13:21.0260248Z           "complete": false,
2026-06-20T03:13:21.0260500Z           "evidence": []
2026-06-20T03:13:21.0260714Z         },
2026-06-20T03:13:21.0260911Z         "impl": {
2026-06-20T03:13:21.0261129Z           "complete": true,
2026-06-20T03:13:21.0261363Z           "evidence": [
2026-06-20T03:13:21.0261587Z             {
2026-06-20T03:13:21.0261817Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0262094Z               "line": 1087
2026-06-20T03:13:21.0262340Z             }
2026-06-20T03:13:21.0262539Z           ]
2026-06-20T03:13:21.0262738Z         },
2026-06-20T03:13:21.0262938Z         "int": {
2026-06-20T03:13:21.0263158Z           "complete": false,
2026-06-20T03:13:21.0263406Z           "evidence": []
2026-06-20T03:13:21.0263634Z         },
2026-06-20T03:13:21.0263835Z         "unit": {
2026-06-20T03:13:21.0264055Z           "complete": true,
2026-06-20T03:13:21.0264297Z           "evidence": [
2026-06-20T03:13:21.0264516Z             {
2026-06-20T03:13:21.0264751Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0265021Z               "line": 7912
2026-06-20T03:13:21.0265242Z             }
2026-06-20T03:13:21.0265444Z           ]
2026-06-20T03:13:21.0265638Z         }
2026-06-20T03:13:21.0265834Z       }
2026-06-20T03:13:21.0266035Z     },
2026-06-20T03:13:21.0266224Z     {
2026-06-20T03:13:21.0266439Z       "id": "REQ-CLI-4",
2026-06-20T03:13:21.0268852Z       "title": "User-facing CLI output is human-readable: DIRECT-USER commands (e.g. adapter update/list/use) render friendly prose instead of raw CODE:RESULT markers — \"claude-spt is up to date (0.2.0).\" not \"ADAPTER_UPDATE_UPTODATE:claude-spt: installed 0.2.0, latest 0.2.0\". Strictly bounded to the direct-user surface: the adapter-PARSED bringup tokens (SEEDED/BOUND/READY/NO_SEED on seed/listen, which adapters grep) stay machine-parseable — humanization is additive (a human line beside the marker, or a --porcelain/--quiet split), never a silent rename of a dual-contract marker. The user-facing bringup composition belongs to the adapter (perri); this REQ owns only the direct-user CLI surface. (v0.9.0)",
2026-06-20T03:13:21.0270856Z       "requiredStages": [],
2026-06-20T03:13:21.0271109Z       "stages": {
2026-06-20T03:13:21.0271327Z         "doc": {
2026-06-20T03:13:21.0271557Z           "complete": false,
2026-06-20T03:13:21.0271810Z           "evidence": []
2026-06-20T03:13:21.0272034Z         },
2026-06-20T03:13:21.0272239Z         "impl": {
2026-06-20T03:13:21.0272473Z           "complete": true,
2026-06-20T03:13:21.0272721Z           "evidence": [
2026-06-20T03:13:21.0272966Z             {
2026-06-20T03:13:21.0273203Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0273489Z               "line": 5678
2026-06-20T03:13:21.0273700Z             }
2026-06-20T03:13:21.0273899Z           ]
2026-06-20T03:13:21.0274105Z         },
2026-06-20T03:13:21.0274300Z         "int": {
2026-06-20T03:13:21.0274524Z           "complete": false,
2026-06-20T03:13:21.0274766Z           "evidence": []
2026-06-20T03:13:21.0274988Z         },
2026-06-20T03:13:21.0275192Z         "unit": {
2026-06-20T03:13:21.0275420Z           "complete": false,
2026-06-20T03:13:21.0275666Z           "evidence": []
2026-06-20T03:13:21.0275884Z         }
2026-06-20T03:13:21.0276084Z       }
2026-06-20T03:13:21.0276276Z     },
2026-06-20T03:13:21.0276465Z     {
2026-06-20T03:13:21.0276690Z       "id": "REQ-CLI-HELP-MARKDOWN",
2026-06-20T03:13:21.0279993Z       "title": "`spt --help` (and every subcommand --help) renders the inline Markdown authored in the clap doc-comments as terminal styling, never as literal markers: `**bold**` → ANSI bold, `` `code` `` → ANSI cyan, `[text](url)` → `text`. The markers are STRIPPED either way — a raw `**` or backtick must NEVER reach the user (the operator-reported v0.12.0 defect: help text reads `**ctrl-b**` and stray backticks verbatim). Color/bold escapes are emitted ONLY when the help is going to a real terminal AND color is not suppressed (NO_COLOR unset · CLICOLOR != 0 · CLICOLOR_FORCE forces on); a pipe / redirect / CI / NO_COLOR falls back to strip-only (clean plaintext, zero escapes) so machine-readable help is byte-identical regardless of marker syntax. Pure transform over the clap-rendered help string at the single run()/bare_invocation chokepoint; preserves pre-existing ANSI (CSI sequences passed through untouched), never spans markers across a newline, leaves unmatched/empty markers literal, and does not alter the help layout. (v0.12.1)",
2026-06-20T03:13:21.0283070Z       "requiredStages": [
2026-06-20T03:13:21.0283305Z         "impl",
2026-06-20T03:13:21.0283522Z         "unit"
2026-06-20T03:13:21.0283730Z       ],
2026-06-20T03:13:21.0283930Z       "stages": {
2026-06-20T03:13:21.0284149Z         "doc": {
2026-06-20T03:13:21.0284383Z           "complete": false,
2026-06-20T03:13:21.0284631Z           "evidence": []
2026-06-20T03:13:21.0284856Z         },
2026-06-20T03:13:21.0285060Z         "impl": {
2026-06-20T03:13:21.0285289Z           "complete": true,
2026-06-20T03:13:21.0285528Z           "evidence": [
2026-06-20T03:13:21.0285757Z             {
2026-06-20T03:13:21.0285998Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T03:13:21.0286287Z               "line": 8
2026-06-20T03:13:21.0286521Z             },
2026-06-20T03:13:21.0286725Z             {
2026-06-20T03:13:21.0286973Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T03:13:21.0287255Z               "line": 51
2026-06-20T03:13:21.0287475Z             },
2026-06-20T03:13:21.0287679Z             {
2026-06-20T03:13:21.0287918Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T03:13:21.0288213Z               "line": 82
2026-06-20T03:13:21.0288434Z             },
2026-06-20T03:13:21.0288633Z             {
2026-06-20T03:13:21.0288885Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T03:13:21.0289228Z               "line": 229
2026-06-20T03:13:21.0289458Z             }
2026-06-20T03:13:21.0289658Z           ]
2026-06-20T03:13:21.0289852Z         },
2026-06-20T03:13:21.0290053Z         "int": {
2026-06-20T03:13:21.0290278Z           "complete": false,
2026-06-20T03:13:21.0290535Z           "evidence": []
2026-06-20T03:13:21.0290753Z         },
2026-06-20T03:13:21.0290946Z         "unit": {
2026-06-20T03:13:21.0291167Z           "complete": true,
2026-06-20T03:13:21.0291413Z           "evidence": [
2026-06-20T03:13:21.0291638Z             {
2026-06-20T03:13:21.0291871Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T03:13:21.0292166Z               "line": 249
2026-06-20T03:13:21.0292395Z             },
2026-06-20T03:13:21.0292620Z             {
2026-06-20T03:13:21.0292874Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T03:13:21.0293154Z               "line": 256
2026-06-20T03:13:21.0293383Z             },
2026-06-20T03:13:21.0293588Z             {
2026-06-20T03:13:21.0293828Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T03:13:21.0294106Z               "line": 263
2026-06-20T03:13:21.0294333Z             },
2026-06-20T03:13:21.0294539Z             {
2026-06-20T03:13:21.0294782Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T03:13:21.0295058Z               "line": 270
2026-06-20T03:13:21.0295291Z             },
2026-06-20T03:13:21.0295506Z             {
2026-06-20T03:13:21.0295746Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T03:13:21.0296031Z               "line": 297
2026-06-20T03:13:21.0296260Z             },
2026-06-20T03:13:21.0296475Z             {
2026-06-20T03:13:21.0296829Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T03:13:21.0297115Z               "line": 307
2026-06-20T03:13:21.0297443Z             },
2026-06-20T03:13:21.0297644Z             {
2026-06-20T03:13:21.0297881Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T03:13:21.0298164Z               "line": 317
2026-06-20T03:13:21.0298388Z             },
2026-06-20T03:13:21.0298583Z             {
2026-06-20T03:13:21.0298821Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T03:13:21.0299199Z               "line": 331
2026-06-20T03:13:21.0299426Z             },
2026-06-20T03:13:21.0299637Z             {
2026-06-20T03:13:21.0299869Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T03:13:21.0300150Z               "line": 340
2026-06-20T03:13:21.0300375Z             },
2026-06-20T03:13:21.0300576Z             {
2026-06-20T03:13:21.0300823Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T03:13:21.0301104Z               "line": 348
2026-06-20T03:13:21.0301333Z             }
2026-06-20T03:13:21.0301530Z           ]
2026-06-20T03:13:21.0301733Z         }
2026-06-20T03:13:21.0301927Z       }
2026-06-20T03:13:21.0302117Z     },
2026-06-20T03:13:21.0302317Z     {
2026-06-20T03:13:21.0302546Z       "id": "REQ-CLI-OUTPUT-MARKDOWN",
2026-06-20T03:13:21.0310888Z       "title": "Human-prose COMMAND OUTPUT (not just `--help`) renders the inline Markdown authored in its source strings as terminal styling, never literal markers: `` `code` `` → ANSI cyan, `**bold**` → ANSI bold, `[text](url)` → `text`, markers STRIPPED either way. REQ-CLI-HELP-MARKDOWN only hooked the clap `--help` chokepoint, so command output still printed raw Markdown (audit: `spt how-to` topic text showed `# headers`/backticks, `spt subnet`/`subnet status` hint footers showed stray backticks, the daemon-status `not running` line, the `ENDPOINT_RUN_STARTED` attach hint, and the daemon's `SUBNET_DETACHED` startup line — 13 prose surfaces). The same line-bounded pure `helpfmt::render` is applied at each emit site, color-gated by the OUTPUT STREAM's own tty (`stdout_color` for print/println, the new `stderr_color` for eprintln). HARNESS-SAFETY (binding): color is tty-gated, so an adapter (piped / non-tty / NO_COLOR) gets STRIP mode = zero ANSI + markers removed; every dual-contract MACHINE token on a rendered line (`ENDPOINT_RUN_STARTED:`, `NO_SUCH_TOPIC:`, `SUBNET_DETACHED:`) carries NO Markdown markers, so it survives strip byte-intact — the adapter parse is never perturbed. Pure-machine output (the `<EVENT …>` envelope, bringup parse-tokens SEEDED/BOUND/READY/NO_SEED, `--json`, QR) is NEVER routed through the renderer. The one spt-daemon source string (`SUBNET_DETACHED`, the bin-local renderer is unreachable from the daemon crate) is authored marker-free instead. (v0.12.2)",
2026-06-20T03:13:21.0314938Z       "requiredStages": [
2026-06-20T03:13:21.0315179Z         "impl",
2026-06-20T03:13:21.0315397Z         "unit"
2026-06-20T03:13:21.0315601Z       ],
2026-06-20T03:13:21.0315801Z       "stages": {
2026-06-20T03:13:21.0316041Z         "doc": {
2026-06-20T03:13:21.0316265Z           "complete": false,
2026-06-20T03:13:21.0316532Z           "evidence": []
2026-06-20T03:13:21.0316745Z         },
2026-06-20T03:13:21.0316942Z         "impl": {
2026-06-20T03:13:21.0317166Z           "complete": true,
2026-06-20T03:13:21.0317409Z           "evidence": [
2026-06-20T03:13:21.0317632Z             {
2026-06-20T03:13:21.0317884Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.0318192Z               "line": 141
2026-06-20T03:13:21.0318416Z             },
2026-06-20T03:13:21.0318616Z             {
2026-06-20T03:13:21.0318855Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0319207Z               "line": 1376
2026-06-20T03:13:21.0319433Z             },
2026-06-20T03:13:21.0319637Z             {
2026-06-20T03:13:21.0319870Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0320147Z               "line": 2145
2026-06-20T03:13:21.0320367Z             },
2026-06-20T03:13:21.0320737Z             {
2026-06-20T03:13:21.0320966Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0321334Z               "line": 4368
2026-06-20T03:13:21.0321552Z             },
2026-06-20T03:13:21.0321758Z             {
2026-06-20T03:13:21.0321997Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0322273Z               "line": 4466
2026-06-20T03:13:21.0322501Z             },
2026-06-20T03:13:21.0322688Z             {
2026-06-20T03:13:21.0322915Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0323199Z               "line": 5257
2026-06-20T03:13:21.0323433Z             },
2026-06-20T03:13:21.0323643Z             {
2026-06-20T03:13:21.0323881Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T03:13:21.0324167Z               "line": 39
2026-06-20T03:13:21.0324386Z             }
2026-06-20T03:13:21.0324582Z           ]
2026-06-20T03:13:21.0324782Z         },
2026-06-20T03:13:21.0324983Z         "int": {
2026-06-20T03:13:21.0325217Z           "complete": false,
2026-06-20T03:13:21.0325470Z           "evidence": []
2026-06-20T03:13:21.0325692Z         },
2026-06-20T03:13:21.0325910Z         "unit": {
2026-06-20T03:13:21.0326138Z           "complete": true,
2026-06-20T03:13:21.0326366Z           "evidence": [
2026-06-20T03:13:21.0326587Z             {
2026-06-20T03:13:21.0326830Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0327102Z               "line": 10272
2026-06-20T03:13:21.0327329Z             },
2026-06-20T03:13:21.0327530Z             {
2026-06-20T03:13:21.0327765Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T03:13:21.0328056Z               "line": 281
2026-06-20T03:13:21.0328268Z             },
2026-06-20T03:13:21.0334833Z             {
2026-06-20T03:13:21.0335152Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T03:13:21.0335453Z               "line": 358
2026-06-20T03:13:21.0335691Z             },
2026-06-20T03:13:21.0335905Z             {
2026-06-20T03:13:21.0336172Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T03:13:21.0336475Z               "line": 381
2026-06-20T03:13:21.0336708Z             },
2026-06-20T03:13:21.0336903Z             {
2026-06-20T03:13:21.0337142Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T03:13:21.0337433Z               "line": 395
2026-06-20T03:13:21.0337662Z             }
2026-06-20T03:13:21.0337866Z           ]
2026-06-20T03:13:21.0338067Z         }
2026-06-20T03:13:21.0338258Z       }
2026-06-20T03:13:21.0338448Z     },
2026-06-20T03:13:21.0338635Z     {
2026-06-20T03:13:21.0338852Z       "id": "REQ-CONSENT-1",
2026-06-20T03:13:21.0340042Z       "title": "Consent grant store: capability x subject-agent x target-node rows, enforced at the target node, subnet-settable (replicates as security material near the trust store), revocable; gated-capability ids (remote-exec, instantiate-anywhere) reserved-but-refusing; v1 consumers are the shell spawn gates (CONTEXT Consent & security gates)",
2026-06-20T03:13:21.0341096Z       "requiredStages": [
2026-06-20T03:13:21.0341343Z         "impl",
2026-06-20T03:13:21.0341555Z         "unit"
2026-06-20T03:13:21.0341766Z       ],
2026-06-20T03:13:21.0341963Z       "stages": {
2026-06-20T03:13:21.0342178Z         "doc": {
2026-06-20T03:13:21.0342406Z           "complete": false,
2026-06-20T03:13:21.0342658Z           "evidence": []
2026-06-20T03:13:21.0342883Z         },
2026-06-20T03:13:21.0343089Z         "impl": {
2026-06-20T03:13:21.0343321Z           "complete": true,
2026-06-20T03:13:21.0343559Z           "evidence": [
2026-06-20T03:13:21.0343781Z             {
2026-06-20T03:13:21.0344041Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T03:13:21.0344338Z               "line": 27
2026-06-20T03:13:21.0344563Z             },
2026-06-20T03:13:21.0344768Z             {
2026-06-20T03:13:21.0345011Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T03:13:21.0345292Z               "line": 75
2026-06-20T03:13:21.0345511Z             },
2026-06-20T03:13:21.0345869Z             {
2026-06-20T03:13:21.0346121Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T03:13:21.0346489Z               "line": 98
2026-06-20T03:13:21.0346704Z             },
2026-06-20T03:13:21.0346908Z             {
2026-06-20T03:13:21.0347148Z               "path": "crates/spt-store/src/grants.rs",
2026-06-20T03:13:21.0347439Z               "line": 82
2026-06-20T03:13:21.0347664Z             },
2026-06-20T03:13:21.0347859Z             {
2026-06-20T03:13:21.0348102Z               "path": "crates/spt-store/src/grants.rs",
2026-06-20T03:13:21.0348379Z               "line": 109
2026-06-20T03:13:21.0348608Z             },
2026-06-20T03:13:21.0348813Z             {
2026-06-20T03:13:21.0349123Z               "path": "crates/spt-store/src/grants.rs",
2026-06-20T03:13:21.0349398Z               "line": 127
2026-06-20T03:13:21.0349630Z             },
2026-06-20T03:13:21.0349820Z             {
2026-06-20T03:13:21.0350063Z               "path": "crates/spt-store/src/grants.rs",
2026-06-20T03:13:21.0350359Z               "line": 142
2026-06-20T03:13:21.0350579Z             },
2026-06-20T03:13:21.0350780Z             {
2026-06-20T03:13:21.0351007Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0351284Z               "line": 7048
2026-06-20T03:13:21.0351546Z             }
2026-06-20T03:13:21.0351757Z           ]
2026-06-20T03:13:21.0351952Z         },
2026-06-20T03:13:21.0352148Z         "int": {
2026-06-20T03:13:21.0352365Z           "complete": false,
2026-06-20T03:13:21.0352608Z           "evidence": []
2026-06-20T03:13:21.0352834Z         },
2026-06-20T03:13:21.0353029Z         "unit": {
2026-06-20T03:13:21.0353256Z           "complete": true,
2026-06-20T03:13:21.0353501Z           "evidence": [
2026-06-20T03:13:21.0353720Z             {
2026-06-20T03:13:21.0353969Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T03:13:21.0354249Z               "line": 334
2026-06-20T03:13:21.0354463Z             },
2026-06-20T03:13:21.0354667Z             {
2026-06-20T03:13:21.0354918Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T03:13:21.0355208Z               "line": 380
2026-06-20T03:13:21.0355442Z             },
2026-06-20T03:13:21.0355648Z             {
2026-06-20T03:13:21.0355896Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T03:13:21.0356181Z               "line": 391
2026-06-20T03:13:21.0356410Z             },
2026-06-20T03:13:21.0356616Z             {
2026-06-20T03:13:21.0356860Z               "path": "crates/spt-store/src/grants.rs",
2026-06-20T03:13:21.0357141Z               "line": 165
2026-06-20T03:13:21.0357368Z             },
2026-06-20T03:13:21.0357582Z             {
2026-06-20T03:13:21.0357818Z               "path": "crates/spt-store/src/grants.rs",
2026-06-20T03:13:21.0358099Z               "line": 184
2026-06-20T03:13:21.0358323Z             },
2026-06-20T03:13:21.0358520Z             {
2026-06-20T03:13:21.0358763Z               "path": "crates/spt-store/src/grants.rs",
2026-06-20T03:13:21.0359112Z               "line": 204
2026-06-20T03:13:21.0359345Z             },
2026-06-20T03:13:21.0359558Z             {
2026-06-20T03:13:21.0359794Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0360078Z               "line": 8334
2026-06-20T03:13:21.0360299Z             }
2026-06-20T03:13:21.0360491Z           ]
2026-06-20T03:13:21.0360695Z         }
2026-06-20T03:13:21.0360885Z       }
2026-06-20T03:13:21.0361077Z     },
2026-06-20T03:13:21.0361258Z     {
2026-06-20T03:13:21.0361472Z       "id": "REQ-CONSENT-2",
2026-06-20T03:13:21.0362498Z       "title": "Interactive consent escalation: an ungated high-risk action routes a consent prompt to the user's most-recently-active session; allow-once / allow-always (writes a grant) / deny; pre-consent flags (can_shutdown, shell_wake_spawn_anywhere) author grants via manifest/settings (CONTEXT Consent & security gates)",
2026-06-20T03:13:21.0363474Z       "requiredStages": [
2026-06-20T03:13:21.0363699Z         "impl",
2026-06-20T03:13:21.0363909Z         "unit"
2026-06-20T03:13:21.0364224Z       ],
2026-06-20T03:13:21.0364418Z       "stages": {
2026-06-20T03:13:21.0364723Z         "doc": {
2026-06-20T03:13:21.0364948Z           "complete": false,
2026-06-20T03:13:21.0365195Z           "evidence": []
2026-06-20T03:13:21.0365420Z         },
2026-06-20T03:13:21.0365622Z         "impl": {
2026-06-20T03:13:21.0365841Z           "complete": true,
2026-06-20T03:13:21.0366083Z           "evidence": [
2026-06-20T03:13:21.0366303Z             {
2026-06-20T03:13:21.0366570Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T03:13:21.0366871Z               "line": 140
2026-06-20T03:13:21.0367096Z             },
2026-06-20T03:13:21.0367300Z             {
2026-06-20T03:13:21.0367547Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T03:13:21.0367844Z               "line": 165
2026-06-20T03:13:21.0368076Z             },
2026-06-20T03:13:21.0368278Z             {
2026-06-20T03:13:21.0368522Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T03:13:21.0368813Z               "line": 199
2026-06-20T03:13:21.0369118Z             },
2026-06-20T03:13:21.0369333Z             {
2026-06-20T03:13:21.0369570Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T03:13:21.0369848Z               "line": 241
2026-06-20T03:13:21.0370072Z             },
2026-06-20T03:13:21.0370263Z             {
2026-06-20T03:13:21.0370519Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T03:13:21.0370797Z               "line": 269
2026-06-20T03:13:21.0371022Z             },
2026-06-20T03:13:21.0371222Z             {
2026-06-20T03:13:21.0371474Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T03:13:21.0371774Z               "line": 300
2026-06-20T03:13:21.0372004Z             },
2026-06-20T03:13:21.0372190Z             {
2026-06-20T03:13:21.0372423Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0372695Z               "line": 6839
2026-06-20T03:13:21.0372921Z             },
2026-06-20T03:13:21.0373135Z             {
2026-06-20T03:13:21.0373367Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0373643Z               "line": 6897
2026-06-20T03:13:21.0373877Z             }
2026-06-20T03:13:21.0374076Z           ]
2026-06-20T03:13:21.0374269Z         },
2026-06-20T03:13:21.0374469Z         "int": {
2026-06-20T03:13:21.0374697Z           "complete": false,
2026-06-20T03:13:21.0374940Z           "evidence": []
2026-06-20T03:13:21.0375203Z         },
2026-06-20T03:13:21.0375408Z         "unit": {
2026-06-20T03:13:21.0375631Z           "complete": true,
2026-06-20T03:13:21.0375867Z           "evidence": [
2026-06-20T03:13:21.0376087Z             {
2026-06-20T03:13:21.0376339Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T03:13:21.0376638Z               "line": 419
2026-06-20T03:13:21.0376863Z             },
2026-06-20T03:13:21.0377069Z             {
2026-06-20T03:13:21.0377321Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T03:13:21.0377612Z               "line": 436
2026-06-20T03:13:21.0377836Z             },
2026-06-20T03:13:21.0378042Z             {
2026-06-20T03:13:21.0378295Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T03:13:21.0378574Z               "line": 472
2026-06-20T03:13:21.0378801Z             },
2026-06-20T03:13:21.0379068Z             {
2026-06-20T03:13:21.0379316Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T03:13:21.0379593Z               "line": 516
2026-06-20T03:13:21.0379820Z             },
2026-06-20T03:13:21.0380022Z             {
2026-06-20T03:13:21.0380246Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0380518Z               "line": 9614
2026-06-20T03:13:21.0380751Z             },
2026-06-20T03:13:21.0380947Z             {
2026-06-20T03:13:21.0381179Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0381462Z               "line": 9696
2026-06-20T03:13:21.0381691Z             }
2026-06-20T03:13:21.0381883Z           ]
2026-06-20T03:13:21.0382188Z         }
2026-06-20T03:13:21.0382387Z       }
2026-06-20T03:13:21.0382569Z     },
2026-06-20T03:13:21.0382884Z     {
2026-06-20T03:13:21.0383100Z       "id": "REQ-CONSENT-3",
2026-06-20T03:13:21.0385157Z       "title": "Per-capability approval gates (class-keyed): the require_approval enum may ride INDIVIDUAL [shell.capabilities] entries — gating the dangerous ACT, not just the spawn — with an optional class_key scoping the grant qualifier finer than the capability id ((owner endpoint x device class x node); a remembered HID-class attach grant never authorizes a storage-class attach). Reuses the grant store + interactive escalation + tighten-only floor (REQ-CONSENT-1/2 plumbing). Spawn gates govern EXISTENCE; capability gates govern ACTS — an explicitly distinct invariant (CONTEXT:283, ratified 2026-06-11 Gateway grill).",
2026-06-20T03:13:21.0386884Z       "requiredStages": [
2026-06-20T03:13:21.0387113Z         "doc",
2026-06-20T03:13:21.0387315Z         "impl",
2026-06-20T03:13:21.0387523Z         "unit",
2026-06-20T03:13:21.0387743Z         "int"
2026-06-20T03:13:21.0387940Z       ],
2026-06-20T03:13:21.0388153Z       "stages": {
2026-06-20T03:13:21.0388353Z         "doc": {
2026-06-20T03:13:21.0388574Z           "complete": true,
2026-06-20T03:13:21.0388812Z           "evidence": [
2026-06-20T03:13:21.0389091Z             {
2026-06-20T03:13:21.0389318Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.0389586Z               "line": 304
2026-06-20T03:13:21.0389814Z             }
2026-06-20T03:13:21.0390023Z           ]
2026-06-20T03:13:21.0390219Z         },
2026-06-20T03:13:21.0390425Z         "impl": {
2026-06-20T03:13:21.0390648Z           "complete": true,
2026-06-20T03:13:21.0390882Z           "evidence": [
2026-06-20T03:13:21.0391107Z             {
2026-06-20T03:13:21.0391364Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T03:13:21.0391658Z               "line": 123
2026-06-20T03:13:21.0391880Z             },
2026-06-20T03:13:21.0392090Z             {
2026-06-20T03:13:21.0392356Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T03:13:21.0392652Z               "line": 162
2026-06-20T03:13:21.0392877Z             },
2026-06-20T03:13:21.0393087Z             {
2026-06-20T03:13:21.0393340Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T03:13:21.0393463Z               "line": 291
2026-06-20T03:13:21.0393554Z             },
2026-06-20T03:13:21.0393660Z             {
2026-06-20T03:13:21.0393806Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.0393916Z               "line": 574
2026-06-20T03:13:21.0394027Z             },
2026-06-20T03:13:21.0394130Z             {
2026-06-20T03:13:21.0394289Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.0394398Z               "line": 824
2026-06-20T03:13:21.0394501Z             },
2026-06-20T03:13:21.0394601Z             {
2026-06-20T03:13:21.0394741Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0394863Z               "line": 6965
2026-06-20T03:13:21.0394964Z             }
2026-06-20T03:13:21.0395065Z           ]
2026-06-20T03:13:21.0395173Z         },
2026-06-20T03:13:21.0395275Z         "int": {
2026-06-20T03:13:21.0395389Z           "complete": true,
2026-06-20T03:13:21.0395502Z           "evidence": [
2026-06-20T03:13:21.0395613Z             {
2026-06-20T03:13:21.0395765Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-20T03:13:21.0395870Z               "line": 16
2026-06-20T03:13:21.0395966Z             }
2026-06-20T03:13:21.0396080Z           ]
2026-06-20T03:13:21.0396180Z         },
2026-06-20T03:13:21.0396295Z         "unit": {
2026-06-20T03:13:21.0396414Z           "complete": true,
2026-06-20T03:13:21.0396529Z           "evidence": [
2026-06-20T03:13:21.0396629Z             {
2026-06-20T03:13:21.0396780Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T03:13:21.0396899Z               "line": 1019
2026-06-20T03:13:21.0396998Z             },
2026-06-20T03:13:21.0397226Z             {
2026-06-20T03:13:21.0397382Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T03:13:21.0397584Z               "line": 1066
2026-06-20T03:13:21.0397692Z             },
2026-06-20T03:13:21.0397793Z             {
2026-06-20T03:13:21.0397946Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.0398050Z               "line": 1394
2026-06-20T03:13:21.0398161Z             }
2026-06-20T03:13:21.0398260Z           ]
2026-06-20T03:13:21.0398360Z         }
2026-06-20T03:13:21.0398461Z       }
2026-06-20T03:13:21.0398566Z     },
2026-06-20T03:13:21.0398665Z     {
2026-06-20T03:13:21.0398786Z       "id": "REQ-CONV-1",
2026-06-20T03:13:21.0400298Z       "title": "Peer address seeding, both cold starts: durable peer-addrs.json (identity dir) maps peer pubkey → last-known dialable address; the pump's resolver consults it FIRST with id-only discovery fallback on miss or dial failure (a stale addr never strands a peer); written by the pairing ceremony (both sides, from the live connection) and by the pump on successful connect; post-join first sync and post-restart resync converge in seconds, not ~1 min (M8 decisions 14, 20)",
2026-06-20T03:13:21.0400451Z       "requiredStages": [
2026-06-20T03:13:21.0400555Z         "impl",
2026-06-20T03:13:21.0400665Z         "unit"
2026-06-20T03:13:21.0400766Z       ],
2026-06-20T03:13:21.0400875Z       "stages": {
2026-06-20T03:13:21.0400975Z         "doc": {
2026-06-20T03:13:21.0401095Z           "complete": false,
2026-06-20T03:13:21.0401218Z           "evidence": []
2026-06-20T03:13:21.0401324Z         },
2026-06-20T03:13:21.0401423Z         "impl": {
2026-06-20T03:13:21.0401547Z           "complete": true,
2026-06-20T03:13:21.0401691Z           "evidence": [
2026-06-20T03:13:21.0401794Z             {
2026-06-20T03:13:21.0401944Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T03:13:21.0402058Z               "line": 938
2026-06-20T03:13:21.0402166Z             },
2026-06-20T03:13:21.0402261Z             {
2026-06-20T03:13:21.0402417Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T03:13:21.0402540Z               "line": 94
2026-06-20T03:13:21.0402646Z             },
2026-06-20T03:13:21.0402746Z             {
2026-06-20T03:13:21.0402898Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T03:13:21.0403008Z               "line": 345
2026-06-20T03:13:21.0403117Z             },
2026-06-20T03:13:21.0403217Z             {
2026-06-20T03:13:21.0403366Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T03:13:21.0403479Z               "line": 387
2026-06-20T03:13:21.0403586Z             },
2026-06-20T03:13:21.0403694Z             {
2026-06-20T03:13:21.0403842Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T03:13:21.0403962Z               "line": 472
2026-06-20T03:13:21.0404071Z             },
2026-06-20T03:13:21.0404176Z             {
2026-06-20T03:13:21.0404323Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T03:13:21.0404433Z               "line": 667
2026-06-20T03:13:21.0404539Z             },
2026-06-20T03:13:21.0404643Z             {
2026-06-20T03:13:21.0404801Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T03:13:21.0404921Z               "line": 693
2026-06-20T03:13:21.0405024Z             },
2026-06-20T03:13:21.0405133Z             {
2026-06-20T03:13:21.0405277Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T03:13:21.0405386Z               "line": 369
2026-06-20T03:13:21.0405486Z             },
2026-06-20T03:13:21.0405582Z             {
2026-06-20T03:13:21.0405738Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-20T03:13:21.0405849Z               "line": 19
2026-06-20T03:13:21.0405954Z             }
2026-06-20T03:13:21.0406058Z           ]
2026-06-20T03:13:21.0406160Z         },
2026-06-20T03:13:21.0406264Z         "int": {
2026-06-20T03:13:21.0406387Z           "complete": false,
2026-06-20T03:13:21.0406507Z           "evidence": []
2026-06-20T03:13:21.0406711Z         },
2026-06-20T03:13:21.0406822Z         "unit": {
2026-06-20T03:13:21.0406940Z           "complete": true,
2026-06-20T03:13:21.0407137Z           "evidence": [
2026-06-20T03:13:21.0407236Z             {
2026-06-20T03:13:21.0407382Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T03:13:21.0407506Z               "line": 1263
2026-06-20T03:13:21.0407609Z             },
2026-06-20T03:13:21.0407714Z             {
2026-06-20T03:13:21.0407863Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-20T03:13:21.0407986Z               "line": 108
2026-06-20T03:13:21.0408082Z             },
2026-06-20T03:13:21.0408187Z             {
2026-06-20T03:13:21.0408339Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-20T03:13:21.0408450Z               "line": 134
2026-06-20T03:13:21.0408553Z             },
2026-06-20T03:13:21.0408659Z             {
2026-06-20T03:13:21.0408802Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-20T03:13:21.0408920Z               "line": 144
2026-06-20T03:13:21.0409098Z             }
2026-06-20T03:13:21.0409197Z           ]
2026-06-20T03:13:21.0409298Z         }
2026-06-20T03:13:21.0409408Z       }
2026-06-20T03:13:21.0409497Z     },
2026-06-20T03:13:21.0409598Z     {
2026-06-20T03:13:21.0409708Z       "id": "REQ-CONV-2",
2026-06-20T03:13:21.0410858Z       "title": "Event-driven advertisement: endpoint online/offline transitions (ready-listener start/stop, rest-state transition, perch death) trigger an immediate advertise_local + peer push as a WAKE of the existing pump loop (no second advertisement path — epoch lease + visibility gates ride unchanged); the cadence stays the steady-state floor (M8 decision 15)",
2026-06-20T03:13:21.0410983Z       "requiredStages": [
2026-06-20T03:13:21.0411078Z         "impl",
2026-06-20T03:13:21.0411182Z         "unit"
2026-06-20T03:13:21.0411278Z       ],
2026-06-20T03:13:21.0411393Z       "stages": {
2026-06-20T03:13:21.0411501Z         "doc": {
2026-06-20T03:13:21.0411622Z           "complete": false,
2026-06-20T03:13:21.0411741Z           "evidence": []
2026-06-20T03:13:21.0411831Z         },
2026-06-20T03:13:21.0411951Z         "impl": {
2026-06-20T03:13:21.0412069Z           "complete": true,
2026-06-20T03:13:21.0412174Z           "evidence": [
2026-06-20T03:13:21.0412285Z             {
2026-06-20T03:13:21.0412427Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.0412542Z               "line": 409
2026-06-20T03:13:21.0412651Z             },
2026-06-20T03:13:21.0412750Z             {
2026-06-20T03:13:21.0412917Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-20T03:13:21.0413034Z               "line": 119
2026-06-20T03:13:21.0413133Z             },
2026-06-20T03:13:21.0413230Z             {
2026-06-20T03:13:21.0413401Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.0413516Z               "line": 841
2026-06-20T03:13:21.0413616Z             },
2026-06-20T03:13:21.0413720Z             {
2026-06-20T03:13:21.0413888Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.0414011Z               "line": 852
2026-06-20T03:13:21.0414102Z             },
2026-06-20T03:13:21.0414208Z             {
2026-06-20T03:13:21.0414354Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T03:13:21.0414465Z               "line": 334
2026-06-20T03:13:21.0414574Z             },
2026-06-20T03:13:21.0414669Z             {
2026-06-20T03:13:21.0414809Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0414921Z               "line": 3074
2026-06-20T03:13:21.0415027Z             },
2026-06-20T03:13:21.0415129Z             {
2026-06-20T03:13:21.0415270Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0415386Z               "line": 3090
2026-06-20T03:13:21.0415486Z             },
2026-06-20T03:13:21.0415593Z             {
2026-06-20T03:13:21.0415713Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0415838Z               "line": 3170
2026-06-20T03:13:21.0416051Z             }
2026-06-20T03:13:21.0416156Z           ]
2026-06-20T03:13:21.0416347Z         },
2026-06-20T03:13:21.0416457Z         "int": {
2026-06-20T03:13:21.0416580Z           "complete": false,
2026-06-20T03:13:21.0416690Z           "evidence": []
2026-06-20T03:13:21.0416795Z         },
2026-06-20T03:13:21.0416899Z         "unit": {
2026-06-20T03:13:21.0417015Z           "complete": true,
2026-06-20T03:13:21.0417129Z           "evidence": [
2026-06-20T03:13:21.0417234Z             {
2026-06-20T03:13:21.0417387Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T03:13:21.0417496Z               "line": 889
2026-06-20T03:13:21.0417601Z             },
2026-06-20T03:13:21.0417702Z             {
2026-06-20T03:13:21.0417858Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T03:13:21.0417967Z               "line": 1014
2026-06-20T03:13:21.0418071Z             },
2026-06-20T03:13:21.0418170Z             {
2026-06-20T03:13:21.0418328Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-20T03:13:21.0418446Z               "line": 215
2026-06-20T03:13:21.0418550Z             }
2026-06-20T03:13:21.0418661Z           ]
2026-06-20T03:13:21.0418761Z         }
2026-06-20T03:13:21.0418856Z       }
2026-06-20T03:13:21.0419019Z     },
2026-06-20T03:13:21.0419118Z     {
2026-06-20T03:13:21.0419233Z       "id": "REQ-DAEMON-1",
2026-06-20T03:13:21.0419433Z       "title": "One per-machine spt-daemon owning all per-machine state",
2026-06-20T03:13:21.0419567Z       "requiredStages": [
2026-06-20T03:13:21.0419672Z         "impl",
2026-06-20T03:13:21.0419772Z         "unit",
2026-06-20T03:13:21.0419882Z         "int"
2026-06-20T03:13:21.0419977Z       ],
2026-06-20T03:13:21.0420087Z       "stages": {
2026-06-20T03:13:21.0420197Z         "doc": {
2026-06-20T03:13:21.0420320Z           "complete": false,
2026-06-20T03:13:21.0420430Z           "evidence": []
2026-06-20T03:13:21.0420536Z         },
2026-06-20T03:13:21.0420645Z         "impl": {
2026-06-20T03:13:21.0420762Z           "complete": true,
2026-06-20T03:13:21.0420873Z           "evidence": [
2026-06-20T03:13:21.0476729Z             {
2026-06-20T03:13:21.0477125Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0477254Z               "line": 229
2026-06-20T03:13:21.0477368Z             },
2026-06-20T03:13:21.0477468Z             {
2026-06-20T03:13:21.0477644Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-20T03:13:21.0477764Z               "line": 12
2026-06-20T03:13:21.0477879Z             },
2026-06-20T03:13:21.0477988Z             {
2026-06-20T03:13:21.0478142Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.0478250Z               "line": 16
2026-06-20T03:13:21.0478350Z             },
2026-06-20T03:13:21.0478457Z             {
2026-06-20T03:13:21.0478617Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.0478728Z               "line": 309
2026-06-20T03:13:21.0478828Z             },
2026-06-20T03:13:21.0479055Z             {
2026-06-20T03:13:21.0479214Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.0479321Z               "line": 24
2026-06-20T03:13:21.0479428Z             },
2026-06-20T03:13:21.0479523Z             {
2026-06-20T03:13:21.0479684Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.0479790Z               "line": 262
2026-06-20T03:13:21.0479886Z             },
2026-06-20T03:13:21.0479989Z             {
2026-06-20T03:13:21.0480138Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.0480247Z               "line": 279
2026-06-20T03:13:21.0480347Z             },
2026-06-20T03:13:21.0480434Z             {
2026-06-20T03:13:21.0480586Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.0480697Z               "line": 356
2026-06-20T03:13:21.0480796Z             },
2026-06-20T03:13:21.0480896Z             {
2026-06-20T03:13:21.0481049Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.0481442Z               "line": 670
2026-06-20T03:13:21.0481550Z             },
2026-06-20T03:13:21.0481751Z             {
2026-06-20T03:13:21.0481898Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-20T03:13:21.0482008Z               "line": 15
2026-06-20T03:13:21.0482099Z             },
2026-06-20T03:13:21.0482203Z             {
2026-06-20T03:13:21.0482343Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T03:13:21.0482457Z               "line": 241
2026-06-20T03:13:21.0482566Z             },
2026-06-20T03:13:21.0482672Z             {
2026-06-20T03:13:21.0482814Z               "path": "crates/spt/src/api/live.rs",
2026-06-20T03:13:21.0482924Z               "line": 13
2026-06-20T03:13:21.0483029Z             },
2026-06-20T03:13:21.0483133Z             {
2026-06-20T03:13:21.0483277Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.0483386Z               "line": 382
2026-06-20T03:13:21.0483486Z             },
2026-06-20T03:13:21.0483597Z             {
2026-06-20T03:13:21.0483738Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.0483859Z               "line": 494
2026-06-20T03:13:21.0483955Z             }
2026-06-20T03:13:21.0484053Z           ]
2026-06-20T03:13:21.0484162Z         },
2026-06-20T03:13:21.0484253Z         "int": {
2026-06-20T03:13:21.0484370Z           "complete": true,
2026-06-20T03:13:21.0484483Z           "evidence": [
2026-06-20T03:13:21.0484590Z             {
2026-06-20T03:13:21.0484789Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-20T03:13:21.0484900Z               "line": 2
2026-06-20T03:13:21.0485000Z             },
2026-06-20T03:13:21.0485099Z             {
2026-06-20T03:13:21.0485300Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-20T03:13:21.0485409Z               "line": 16
2026-06-20T03:13:21.0485515Z             },
2026-06-20T03:13:21.0485619Z             {
2026-06-20T03:13:21.0485786Z               "path": "crates/spt/tests/live_bind_firsthost_e2e.rs",
2026-06-20T03:13:21.0485896Z               "line": 12
2026-06-20T03:13:21.0486005Z             },
2026-06-20T03:13:21.0486116Z             {
2026-06-20T03:13:21.0486286Z               "path": "crates/spt/tests/live_firsthost_e2e.rs",
2026-06-20T03:13:21.0486396Z               "line": 12
2026-06-20T03:13:21.0486508Z             },
2026-06-20T03:13:21.0486605Z             {
2026-06-20T03:13:21.0486776Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-20T03:13:21.0486885Z               "line": 44
2026-06-20T03:13:21.0486989Z             }
2026-06-20T03:13:21.0487089Z           ]
2026-06-20T03:13:21.0487190Z         },
2026-06-20T03:13:21.0487299Z         "unit": {
2026-06-20T03:13:21.0487413Z           "complete": true,
2026-06-20T03:13:21.0487528Z           "evidence": [
2026-06-20T03:13:21.0487623Z             {
2026-06-20T03:13:21.0487777Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-20T03:13:21.0487895Z               "line": 285
2026-06-20T03:13:21.0488004Z             },
2026-06-20T03:13:21.0488124Z             {
2026-06-20T03:13:21.0488266Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-20T03:13:21.0488377Z               "line": 293
2026-06-20T03:13:21.0488462Z             },
2026-06-20T03:13:21.0488567Z             {
2026-06-20T03:13:21.0488712Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-20T03:13:21.0488825Z               "line": 309
2026-06-20T03:13:21.0488930Z             },
2026-06-20T03:13:21.0489106Z             {
2026-06-20T03:13:21.0489259Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-20T03:13:21.0489370Z               "line": 317
2026-06-20T03:13:21.0489477Z             },
2026-06-20T03:13:21.0489576Z             {
2026-06-20T03:13:21.0489716Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.0489825Z               "line": 659
2026-06-20T03:13:21.0489915Z             },
2026-06-20T03:13:21.0490131Z             {
2026-06-20T03:13:21.0490278Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.0490488Z               "line": 729
2026-06-20T03:13:21.0490593Z             },
2026-06-20T03:13:21.0490693Z             {
2026-06-20T03:13:21.0490845Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.0490961Z               "line": 1211
2026-06-20T03:13:21.0491070Z             },
2026-06-20T03:13:21.0491165Z             {
2026-06-20T03:13:21.0491318Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.0491436Z               "line": 1248
2026-06-20T03:13:21.0491528Z             },
2026-06-20T03:13:21.0491619Z             {
2026-06-20T03:13:21.0491765Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.0491884Z               "line": 1271
2026-06-20T03:13:21.0491979Z             },
2026-06-20T03:13:21.0492082Z             {
2026-06-20T03:13:21.0492235Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.0492359Z               "line": 1300
2026-06-20T03:13:21.0492468Z             },
2026-06-20T03:13:21.0492573Z             {
2026-06-20T03:13:21.0492716Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.0492826Z               "line": 1348
2026-06-20T03:13:21.0492927Z             },
2026-06-20T03:13:21.0493031Z             {
2026-06-20T03:13:21.0493175Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.0493289Z               "line": 1391
2026-06-20T03:13:21.0493393Z             },
2026-06-20T03:13:21.0493494Z             {
2026-06-20T03:13:21.0493627Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-20T03:13:21.0493746Z               "line": 106
2026-06-20T03:13:21.0493842Z             },
2026-06-20T03:13:21.0493932Z             {
2026-06-20T03:13:21.0494075Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-20T03:13:21.0494181Z               "line": 132
2026-06-20T03:13:21.0494294Z             },
2026-06-20T03:13:21.0494400Z             {
2026-06-20T03:13:21.0494548Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T03:13:21.0494660Z               "line": 530
2026-06-20T03:13:21.0494761Z             }
2026-06-20T03:13:21.0494865Z           ]
2026-06-20T03:13:21.0494959Z         }
2026-06-20T03:13:21.0495068Z       }
2026-06-20T03:13:21.0495165Z     },
2026-06-20T03:13:21.0495269Z     {
2026-06-20T03:13:21.0495382Z       "id": "REQ-DAEMON-2",
2026-06-20T03:13:21.0495551Z       "title": "Broker/brain split for seamless self-update",
2026-06-20T03:13:21.0495664Z       "requiredStages": [
2026-06-20T03:13:21.0495770Z         "impl",
2026-06-20T03:13:21.0495880Z         "unit",
2026-06-20T03:13:21.0495978Z         "int"
2026-06-20T03:13:21.0496089Z       ],
2026-06-20T03:13:21.0496193Z       "stages": {
2026-06-20T03:13:21.0496298Z         "doc": {
2026-06-20T03:13:21.0496414Z           "complete": true,
2026-06-20T03:13:21.0496527Z           "evidence": [
2026-06-20T03:13:21.0496637Z             {
2026-06-20T03:13:21.0496781Z               "path": "docs/TWO-HOST-RUNBOOK.md",
2026-06-20T03:13:21.0496885Z               "line": 250
2026-06-20T03:13:21.0496986Z             }
2026-06-20T03:13:21.0497077Z           ]
2026-06-20T03:13:21.0497185Z         },
2026-06-20T03:13:21.0497288Z         "impl": {
2026-06-20T03:13:21.0497409Z           "complete": true,
2026-06-20T03:13:21.0497516Z           "evidence": [
2026-06-20T03:13:21.0497620Z             {
2026-06-20T03:13:21.0497765Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T03:13:21.0497883Z               "line": 23
2026-06-20T03:13:21.0497988Z             },
2026-06-20T03:13:21.0498088Z             {
2026-06-20T03:13:21.0498226Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T03:13:21.0498337Z               "line": 796
2026-06-20T03:13:21.0498437Z             },
2026-06-20T03:13:21.0498541Z             {
2026-06-20T03:13:21.0498676Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T03:13:21.0498870Z               "line": 821
2026-06-20T03:13:21.0499032Z             },
2026-06-20T03:13:21.0499127Z             {
2026-06-20T03:13:21.0499366Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T03:13:21.0499509Z               "line": 1057
2026-06-20T03:13:21.0499615Z             },
2026-06-20T03:13:21.0499713Z             {
2026-06-20T03:13:21.0499853Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.0499963Z               "line": 32
2026-06-20T03:13:21.0500066Z             },
2026-06-20T03:13:21.0500170Z             {
2026-06-20T03:13:21.0500315Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.0500438Z               "line": 1064
2026-06-20T03:13:21.0500538Z             },
2026-06-20T03:13:21.0500643Z             {
2026-06-20T03:13:21.0500786Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.0500906Z               "line": 1764
2026-06-20T03:13:21.0501006Z             },
2026-06-20T03:13:21.0501105Z             {
2026-06-20T03:13:21.0501249Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.0501358Z               "line": 2051
2026-06-20T03:13:21.0501468Z             },
2026-06-20T03:13:21.0501564Z             {
2026-06-20T03:13:21.0501711Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-20T03:13:21.0501841Z               "line": 11
2026-06-20T03:13:21.0501940Z             },
2026-06-20T03:13:21.0502040Z             {
2026-06-20T03:13:21.0502180Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.0502292Z               "line": 153
2026-06-20T03:13:21.0502382Z             },
2026-06-20T03:13:21.0502478Z             {
2026-06-20T03:13:21.0502628Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.0502732Z               "line": 343
2026-06-20T03:13:21.0502838Z             },
2026-06-20T03:13:21.0502938Z             {
2026-06-20T03:13:21.0503081Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-20T03:13:21.0503191Z               "line": 13
2026-06-20T03:13:21.0503300Z             },
2026-06-20T03:13:21.0503410Z             {
2026-06-20T03:13:21.0503558Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T03:13:21.0503667Z               "line": 27
2026-06-20T03:13:21.0503769Z             },
2026-06-20T03:13:21.0503873Z             {
2026-06-20T03:13:21.0504011Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T03:13:21.0504126Z               "line": 147
2026-06-20T03:13:21.0504230Z             },
2026-06-20T03:13:21.0504330Z             {
2026-06-20T03:13:21.0504478Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T03:13:21.0504583Z               "line": 632
2026-06-20T03:13:21.0504689Z             },
2026-06-20T03:13:21.0504788Z             {
2026-06-20T03:13:21.0504931Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T03:13:21.0505047Z               "line": 853
2026-06-20T03:13:21.0505145Z             },
2026-06-20T03:13:21.0505258Z             {
2026-06-20T03:13:21.0505392Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T03:13:21.0505510Z               "line": 1000
2026-06-20T03:13:21.0505619Z             },
2026-06-20T03:13:21.0505715Z             {
2026-06-20T03:13:21.0505871Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T03:13:21.0505982Z               "line": 1089
2026-06-20T03:13:21.0506091Z             },
2026-06-20T03:13:21.0506191Z             {
2026-06-20T03:13:21.0506344Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T03:13:21.0506463Z               "line": 1211
2026-06-20T03:13:21.0506563Z             },
2026-06-20T03:13:21.0506669Z             {
2026-06-20T03:13:21.0506821Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-20T03:13:21.0506936Z               "line": 10
2026-06-20T03:13:21.0507031Z             }
2026-06-20T03:13:21.0507140Z           ]
2026-06-20T03:13:21.0507241Z         },
2026-06-20T03:13:21.0507341Z         "int": {
2026-06-20T03:13:21.0507566Z           "complete": true,
2026-06-20T03:13:21.0507675Z           "evidence": [
2026-06-20T03:13:21.0507883Z             {
2026-06-20T03:13:21.0508029Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-20T03:13:21.0508142Z               "line": 17
2026-06-20T03:13:21.0508243Z             },
2026-06-20T03:13:21.0508330Z             {
2026-06-20T03:13:21.0508486Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-20T03:13:21.0508592Z               "line": 90
2026-06-20T03:13:21.0508701Z             },
2026-06-20T03:13:21.0508796Z             {
2026-06-20T03:13:21.0509154Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-20T03:13:21.0509269Z               "line": 110
2026-06-20T03:13:21.0509359Z             },
2026-06-20T03:13:21.0509463Z             {
2026-06-20T03:13:21.0509616Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-20T03:13:21.0509730Z               "line": 186
2026-06-20T03:13:21.0509846Z             },
2026-06-20T03:13:21.0509941Z             {
2026-06-20T03:13:21.0510093Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-20T03:13:21.0510204Z               "line": 309
2026-06-20T03:13:21.0510312Z             },
2026-06-20T03:13:21.0510418Z             {
2026-06-20T03:13:21.0510575Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-20T03:13:21.0510683Z               "line": 128
2026-06-20T03:13:21.0510784Z             },
2026-06-20T03:13:21.0510895Z             {
2026-06-20T03:13:21.0511041Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-20T03:13:21.0511156Z               "line": 59
2026-06-20T03:13:21.0511247Z             }
2026-06-20T03:13:21.0511336Z           ]
2026-06-20T03:13:21.0511442Z         },
2026-06-20T03:13:21.0511547Z         "unit": {
2026-06-20T03:13:21.0511665Z           "complete": true,
2026-06-20T03:13:21.0511771Z           "evidence": [
2026-06-20T03:13:21.0511875Z             {
2026-06-20T03:13:21.0512018Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-20T03:13:21.0512129Z               "line": 62
2026-06-20T03:13:21.0512233Z             },
2026-06-20T03:13:21.0512333Z             {
2026-06-20T03:13:21.0512472Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-20T03:13:21.0512585Z               "line": 76
2026-06-20T03:13:21.0512687Z             },
2026-06-20T03:13:21.0512787Z             {
2026-06-20T03:13:21.0512924Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-20T03:13:21.0513038Z               "line": 88
2026-06-20T03:13:21.0513146Z             },
2026-06-20T03:13:21.0513250Z             {
2026-06-20T03:13:21.0513389Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-20T03:13:21.0513498Z               "line": 347
2026-06-20T03:13:21.0513602Z             },
2026-06-20T03:13:21.0513704Z             {
2026-06-20T03:13:21.0513846Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-20T03:13:21.0513961Z               "line": 855
2026-06-20T03:13:21.0514070Z             },
2026-06-20T03:13:21.0514175Z             {
2026-06-20T03:13:21.0514319Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-20T03:13:21.0514419Z               "line": 863
2026-06-20T03:13:21.0514528Z             },
2026-06-20T03:13:21.0514639Z             {
2026-06-20T03:13:21.0514772Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-20T03:13:21.0514881Z               "line": 880
2026-06-20T03:13:21.0514987Z             },
2026-06-20T03:13:21.0515090Z             {
2026-06-20T03:13:21.0515215Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-20T03:13:21.0515325Z               "line": 956
2026-06-20T03:13:21.0515439Z             },
2026-06-20T03:13:21.0515540Z             {
2026-06-20T03:13:21.0515687Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T03:13:21.0515809Z               "line": 1282
2026-06-20T03:13:21.0515919Z             },
2026-06-20T03:13:21.0516018Z             {
2026-06-20T03:13:21.0516169Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T03:13:21.0516403Z               "line": 1294
2026-06-20T03:13:21.0516599Z             },
2026-06-20T03:13:21.0516708Z             {
2026-06-20T03:13:21.0516852Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-20T03:13:21.0516966Z               "line": 110
2026-06-20T03:13:21.0517066Z             },
2026-06-20T03:13:21.0517176Z             {
2026-06-20T03:13:21.0517333Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-20T03:13:21.0517443Z               "line": 145
2026-06-20T03:13:21.0517553Z             }
2026-06-20T03:13:21.0517657Z           ]
2026-06-20T03:13:21.0517757Z         }
2026-06-20T03:13:21.0517850Z       }
2026-06-20T03:13:21.0517957Z     },
2026-06-20T03:13:21.0518053Z     {
2026-06-20T03:13:21.0518165Z       "id": "REQ-DAEMON-3",
2026-06-20T03:13:21.0518348Z       "title": "Any api invocation auto-starts the daemon if absent",
2026-06-20T03:13:21.0518462Z       "requiredStages": [
2026-06-20T03:13:21.0518575Z         "impl",
2026-06-20T03:13:21.0518679Z         "unit",
2026-06-20T03:13:21.0518775Z         "int"
2026-06-20T03:13:21.0518885Z       ],
2026-06-20T03:13:21.0519079Z       "stages": {
2026-06-20T03:13:21.0519186Z         "doc": {
2026-06-20T03:13:21.0519304Z           "complete": false,
2026-06-20T03:13:21.0519414Z           "evidence": []
2026-06-20T03:13:21.0519562Z         },
2026-06-20T03:13:21.0519829Z         "impl": {
2026-06-20T03:13:21.0519976Z           "complete": true,
2026-06-20T03:13:21.0520167Z           "evidence": [
2026-06-20T03:13:21.0520295Z             {
2026-06-20T03:13:21.0520496Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.0520731Z               "line": 14
2026-06-20T03:13:21.0520882Z             },
2026-06-20T03:13:21.0521041Z             {
2026-06-20T03:13:21.0521219Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-20T03:13:21.0521382Z               "line": 11
2026-06-20T03:13:21.0521544Z             },
2026-06-20T03:13:21.0521745Z             {
2026-06-20T03:13:21.0521940Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T03:13:21.0522079Z               "line": 305
2026-06-20T03:13:21.0522220Z             },
2026-06-20T03:13:21.0522379Z             {
2026-06-20T03:13:21.0522608Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0522769Z               "line": 1956
2026-06-20T03:13:21.0522889Z             },
2026-06-20T03:13:21.0523042Z             {
2026-06-20T03:13:21.0523237Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0523441Z               "line": 4235
2026-06-20T03:13:21.0523574Z             },
2026-06-20T03:13:21.0523725Z             {
2026-06-20T03:13:21.0523901Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0524068Z               "line": 4256
2026-06-20T03:13:21.0524259Z             }
2026-06-20T03:13:21.0524392Z           ]
2026-06-20T03:13:21.0524555Z         },
2026-06-20T03:13:21.0524688Z         "int": {
2026-06-20T03:13:21.0524903Z           "complete": true,
2026-06-20T03:13:21.0525097Z           "evidence": [
2026-06-20T03:13:21.0525227Z             {
2026-06-20T03:13:21.0525436Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-20T03:13:21.0525566Z               "line": 49
2026-06-20T03:13:21.0525766Z             },
2026-06-20T03:13:21.0525946Z             {
2026-06-20T03:13:21.0526119Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-20T03:13:21.0526289Z               "line": 487
2026-06-20T03:13:21.0526417Z             }
2026-06-20T03:13:21.0526620Z           ]
2026-06-20T03:13:21.0526764Z         },
2026-06-20T03:13:21.0526926Z         "unit": {
2026-06-20T03:13:21.0527102Z           "complete": true,
2026-06-20T03:13:21.0527250Z           "evidence": [
2026-06-20T03:13:21.0527437Z             {
2026-06-20T03:13:21.0527631Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.0527804Z               "line": 1553
2026-06-20T03:13:21.0527936Z             },
2026-06-20T03:13:21.0528232Z             {
2026-06-20T03:13:21.0528461Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0528715Z               "line": 10715
2026-06-20T03:13:21.0528889Z             }
2026-06-20T03:13:21.0529089Z           ]
2026-06-20T03:13:21.0529253Z         }
2026-06-20T03:13:21.0529436Z       }
2026-06-20T03:13:21.0529578Z     },
2026-06-20T03:13:21.0529750Z     {
2026-06-20T03:13:21.0529893Z       "id": "REQ-DAEMON-4",
2026-06-20T03:13:21.0530098Z       "title": "Honor every KNOWN-HAZARDS invariant",
2026-06-20T03:13:21.0530222Z       "requiredStages": [
2026-06-20T03:13:21.0530441Z         "impl",
2026-06-20T03:13:21.0530618Z         "unit",
2026-06-20T03:13:21.0530746Z         "int"
2026-06-20T03:13:21.0530904Z       ],
2026-06-20T03:13:21.0531023Z       "stages": {
2026-06-20T03:13:21.0531234Z         "doc": {
2026-06-20T03:13:21.0531399Z           "complete": false,
2026-06-20T03:13:21.0531567Z           "evidence": []
2026-06-20T03:13:21.0531728Z         },
2026-06-20T03:13:21.0531841Z         "impl": {
2026-06-20T03:13:21.0532085Z           "complete": true,
2026-06-20T03:13:21.0532224Z           "evidence": [
2026-06-20T03:13:21.0532390Z             {
2026-06-20T03:13:21.0532577Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.0532733Z               "line": 464
2026-06-20T03:13:21.0532958Z             },
2026-06-20T03:13:21.0533082Z             {
2026-06-20T03:13:21.0533292Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.0533425Z               "line": 529
2026-06-20T03:13:21.0533564Z             },
2026-06-20T03:13:21.0533797Z             {
2026-06-20T03:13:21.0533978Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.0534149Z               "line": 551
2026-06-20T03:13:21.0534276Z             }
2026-06-20T03:13:21.0534413Z           ]
2026-06-20T03:13:21.0534591Z         },
2026-06-20T03:13:21.0534756Z         "int": {
2026-06-20T03:13:21.0534938Z           "complete": true,
2026-06-20T03:13:21.0535081Z           "evidence": [
2026-06-20T03:13:21.0535229Z             {
2026-06-20T03:13:21.0535473Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-20T03:13:21.0535667Z               "line": 42
2026-06-20T03:13:21.0535792Z             }
2026-06-20T03:13:21.0535940Z           ]
2026-06-20T03:13:21.0536098Z         },
2026-06-20T03:13:21.0536264Z         "unit": {
2026-06-20T03:13:21.0536455Z           "complete": true,
2026-06-20T03:13:21.0536593Z           "evidence": [
2026-06-20T03:13:21.0536756Z             {
2026-06-20T03:13:21.0536944Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-20T03:13:21.0537139Z               "line": 428
2026-06-20T03:13:21.0537314Z             },
2026-06-20T03:13:21.0537443Z             {
2026-06-20T03:13:21.0537658Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.0537815Z               "line": 957
2026-06-20T03:13:21.0537987Z             },
2026-06-20T03:13:21.0538163Z             {
2026-06-20T03:13:21.0538340Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.0538530Z               "line": 1027
2026-06-20T03:13:21.0538665Z             },
2026-06-20T03:13:21.0538849Z             {
2026-06-20T03:13:21.0539121Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.0539304Z               "line": 1057
2026-06-20T03:13:21.0539511Z             },
2026-06-20T03:13:21.0539640Z             {
2026-06-20T03:13:21.0539871Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.0540030Z               "line": 1090
2026-06-20T03:13:21.0540186Z             }
2026-06-20T03:13:21.0540359Z           ]
2026-06-20T03:13:21.0540486Z         }
2026-06-20T03:13:21.0540663Z       }
2026-06-20T03:13:21.0540801Z     },
2026-06-20T03:13:21.0540958Z     {
2026-06-20T03:13:21.0541106Z       "id": "REQ-DAEMON-5",
2026-06-20T03:13:21.0542712Z       "title": "Pump liveness: the peer pump writes a last-tick heartbeat consumed by daemon status / subnet status (decision 23 render legs in REQ-CLI-2/REQ-SUBNET-8); the daemon supervises the pump task — a panic is caught, logged loudly, and the pump restarts with capped backoff (≤5 min), so a 5.9-class death self-heals visibly instead of silently halving the daemon (M8 decision 23; field motivation: hfenduleam 2026-06-07 half-death)",
2026-06-20T03:13:21.0543147Z       "requiredStages": [
2026-06-20T03:13:21.0543313Z         "impl",
2026-06-20T03:13:21.0543471Z         "unit"
2026-06-20T03:13:21.0543599Z       ],
2026-06-20T03:13:21.0543763Z       "stages": {
2026-06-20T03:13:21.0543990Z         "doc": {
2026-06-20T03:13:21.0544157Z           "complete": false,
2026-06-20T03:13:21.0544329Z           "evidence": []
2026-06-20T03:13:21.0544449Z         },
2026-06-20T03:13:21.0544609Z         "impl": {
2026-06-20T03:13:21.0544799Z           "complete": true,
2026-06-20T03:13:21.0544964Z           "evidence": [
2026-06-20T03:13:21.0545118Z             {
2026-06-20T03:13:21.0545308Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T03:13:21.0545508Z               "line": 476
2026-06-20T03:13:21.0545617Z             },
2026-06-20T03:13:21.0545851Z             {
2026-06-20T03:13:21.0546071Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T03:13:21.0546218Z               "line": 769
2026-06-20T03:13:21.0546376Z             },
2026-06-20T03:13:21.0546490Z             {
2026-06-20T03:13:21.0546771Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T03:13:21.0546906Z               "line": 782
2026-06-20T03:13:21.0547067Z             },
2026-06-20T03:13:21.0547230Z             {
2026-06-20T03:13:21.0547405Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T03:13:21.0547624Z               "line": 800
2026-06-20T03:13:21.0547751Z             },
2026-06-20T03:13:21.0547908Z             {
2026-06-20T03:13:21.0548122Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T03:13:21.0548247Z               "line": 841
2026-06-20T03:13:21.0548455Z             }
2026-06-20T03:13:21.0548576Z           ]
2026-06-20T03:13:21.0548737Z         },
2026-06-20T03:13:21.0548867Z         "int": {
2026-06-20T03:13:21.0549286Z           "complete": false,
2026-06-20T03:13:21.0549558Z           "evidence": []
2026-06-20T03:13:21.0549686Z         },
2026-06-20T03:13:21.0549849Z         "unit": {
2026-06-20T03:13:21.0550005Z           "complete": true,
2026-06-20T03:13:21.0550148Z           "evidence": [
2026-06-20T03:13:21.0550317Z             {
2026-06-20T03:13:21.0550537Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T03:13:21.0550708Z               "line": 1189
2026-06-20T03:13:21.0550852Z             },
2026-06-20T03:13:21.0550993Z             {
2026-06-20T03:13:21.0551209Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T03:13:21.0551385Z               "line": 1213
2026-06-20T03:13:21.0551561Z             },
2026-06-20T03:13:21.0551686Z             {
2026-06-20T03:13:21.0551881Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T03:13:21.0552063Z               "line": 1239
2026-06-20T03:13:21.0552239Z             }
2026-06-20T03:13:21.0552378Z           ]
2026-06-20T03:13:21.0552548Z         }
2026-06-20T03:13:21.0552693Z       }
2026-06-20T03:13:21.0552853Z     },
2026-06-20T03:13:21.0553015Z     {
2026-06-20T03:13:21.0553168Z       "id": "REQ-DAEMON-6",
2026-06-20T03:13:21.0555246Z       "title": "Service-aware `daemon start`/`stop`: when an OS service manager has a registered spt-daemon for this user, `spt daemon start` and `spt daemon stop` drive THAT service (so stop doesn't IPC-kill a unit that auto-restart-fights for the broker socket — the kitsubito 2026-06-08 loop). `start` graduates from a `run` alias to a first-class background verb (ensure-up, idempotent, non-blocking); stop routes managed→manager, manual→IPC. Linux=systemd user unit (`systemctl --user start|stop|is-active spt-daemon`, detected by unit-file presence); Windows=no controllable manager (the logon task is boot-only), so start=detached spawn / stop=IPC.",
2026-06-20T03:13:21.0555548Z       "requiredStages": [
2026-06-20T03:13:21.0555720Z         "impl",
2026-06-20T03:13:21.0556021Z         "unit"
2026-06-20T03:13:21.0556153Z       ],
2026-06-20T03:13:21.0556326Z       "stages": {
2026-06-20T03:13:21.0556473Z         "doc": {
2026-06-20T03:13:21.0556660Z           "complete": false,
2026-06-20T03:13:21.0556870Z           "evidence": []
2026-06-20T03:13:21.0556998Z         },
2026-06-20T03:13:21.0557161Z         "impl": {
2026-06-20T03:13:21.0557293Z           "complete": true,
2026-06-20T03:13:21.0557500Z           "evidence": [
2026-06-20T03:13:21.0557675Z             {
2026-06-20T03:13:21.0557858Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.0558027Z               "line": 495
2026-06-20T03:13:21.0558160Z             },
2026-06-20T03:13:21.0558353Z             {
2026-06-20T03:13:21.0558574Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.0558715Z               "line": 526
2026-06-20T03:13:21.0558888Z             },
2026-06-20T03:13:21.0559118Z             {
2026-06-20T03:13:21.0559369Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-20T03:13:21.0559522Z               "line": 55
2026-06-20T03:13:21.0559684Z             },
2026-06-20T03:13:21.0559832Z             {
2026-06-20T03:13:21.0560023Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-20T03:13:21.0560213Z               "line": 70
2026-06-20T03:13:21.0560352Z             },
2026-06-20T03:13:21.0560499Z             {
2026-06-20T03:13:21.0560693Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0560840Z               "line": 2020
2026-06-20T03:13:21.0561020Z             },
2026-06-20T03:13:21.0561164Z             {
2026-06-20T03:13:21.0561360Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0561488Z               "line": 2046
2026-06-20T03:13:21.0561670Z             }
2026-06-20T03:13:21.0561850Z           ]
2026-06-20T03:13:21.0561985Z         },
2026-06-20T03:13:21.0562160Z         "int": {
2026-06-20T03:13:21.0562309Z           "complete": false,
2026-06-20T03:13:21.0562480Z           "evidence": []
2026-06-20T03:13:21.0562594Z         },
2026-06-20T03:13:21.0562814Z         "unit": {
2026-06-20T03:13:21.0562986Z           "complete": true,
2026-06-20T03:13:21.0563133Z           "evidence": [
2026-06-20T03:13:21.0563296Z             {
2026-06-20T03:13:21.0563456Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-20T03:13:21.0563676Z               "line": 288
2026-06-20T03:13:21.0563837Z             },
2026-06-20T03:13:21.0563981Z             {
2026-06-20T03:13:21.0564190Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-20T03:13:21.0564315Z               "line": 299
2026-06-20T03:13:21.0564514Z             },
2026-06-20T03:13:21.0564648Z             {
2026-06-20T03:13:21.0564868Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-20T03:13:21.0565049Z               "line": 325
2026-06-20T03:13:21.0565164Z             },
2026-06-20T03:13:21.0565383Z             {
2026-06-20T03:13:21.0565555Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-20T03:13:21.0565749Z               "line": 351
2026-06-20T03:13:21.0565882Z             }
2026-06-20T03:13:21.0566032Z           ]
2026-06-20T03:13:21.0566233Z         }
2026-06-20T03:13:21.0566380Z       }
2026-06-20T03:13:21.0566538Z     },
2026-06-20T03:13:21.0566671Z     {
2026-06-20T03:13:21.0566839Z       "id": "REQ-DAEMON-7",
2026-06-20T03:13:21.0568399Z       "title": "`daemon run` is foreground-consistent on every platform: the invoking process IS the daemon, blocks until signalled, never auto-detaches or respawns into an invisible background task. The detached/de-elevated background behavior lives ONLY in `start`. Windows: an ELEVATED `daemon run` refuses with guidance (use `start`, or an unelevated shell) instead of respawning detached/de-elevated and vanishing (KH 5.7 preserved — it still never serves elevated).",
2026-06-20T03:13:21.0568573Z       "requiredStages": [
2026-06-20T03:13:21.0568861Z         "impl",
2026-06-20T03:13:21.0569081Z         "unit"
2026-06-20T03:13:21.0569324Z       ],
2026-06-20T03:13:21.0569557Z       "stages": {
2026-06-20T03:13:21.0569687Z         "doc": {
2026-06-20T03:13:21.0569867Z           "complete": false,
2026-06-20T03:13:21.0570011Z           "evidence": []
2026-06-20T03:13:21.0570158Z         },
2026-06-20T03:13:21.0570331Z         "impl": {
2026-06-20T03:13:21.0570520Z           "complete": true,
2026-06-20T03:13:21.0570684Z           "evidence": [
2026-06-20T03:13:21.0570807Z             {
2026-06-20T03:13:21.0571017Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.0571201Z               "line": 545
2026-06-20T03:13:21.0571376Z             },
2026-06-20T03:13:21.0571532Z             {
2026-06-20T03:13:21.0571715Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T03:13:21.0571939Z               "line": 610
2026-06-20T03:13:21.0572119Z             },
2026-06-20T03:13:21.0572301Z             {
2026-06-20T03:13:21.0572481Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-20T03:13:21.0572668Z               "line": 89
2026-06-20T03:13:21.0572811Z             },
2026-06-20T03:13:21.0572978Z             {
2026-06-20T03:13:21.0573179Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0573321Z               "line": 1957
2026-06-20T03:13:21.0573489Z             }
2026-06-20T03:13:21.0573616Z           ]
2026-06-20T03:13:21.0573794Z         },
2026-06-20T03:13:21.0573969Z         "int": {
2026-06-20T03:13:21.0574111Z           "complete": false,
2026-06-20T03:13:21.0574288Z           "evidence": []
2026-06-20T03:13:21.0574412Z         },
2026-06-20T03:13:21.0574608Z         "unit": {
2026-06-20T03:13:21.0574790Z           "complete": true,
2026-06-20T03:13:21.0574932Z           "evidence": [
2026-06-20T03:13:21.0575094Z             {
2026-06-20T03:13:21.0575256Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-20T03:13:21.0581323Z               "line": 314
2026-06-20T03:13:21.0581483Z             },
2026-06-20T03:13:21.0581592Z             {
2026-06-20T03:13:21.0581747Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0581862Z               "line": 8102
2026-06-20T03:13:21.0581965Z             }
2026-06-20T03:13:21.0582074Z           ]
2026-06-20T03:13:21.0582165Z         }
2026-06-20T03:13:21.0582271Z       }
2026-06-20T03:13:21.0582369Z     },
2026-06-20T03:13:21.0582470Z     {
2026-06-20T03:13:21.0582590Z       "id": "REQ-DAEMON-8",
2026-06-20T03:13:21.0583628Z       "title": "Internal auto-start prefers the service: `ensure_running` (any spt command's implicit daemon start, REQ-DAEMON-3) routes through the service-aware start path — when a manager has a registered service it starts THAT, never a competing manual `spawn_detached` daemon that would fight the service for the socket.",
2026-06-20T03:13:21.0583758Z       "requiredStages": [
2026-06-20T03:13:21.0583867Z         "impl",
2026-06-20T03:13:21.0583977Z         "unit"
2026-06-20T03:13:21.0584088Z       ],
2026-06-20T03:13:21.0584195Z       "stages": {
2026-06-20T03:13:21.0584311Z         "doc": {
2026-06-20T03:13:21.0584436Z           "complete": false,
2026-06-20T03:13:21.0584543Z           "evidence": []
2026-06-20T03:13:21.0584638Z         },
2026-06-20T03:13:21.0584749Z         "impl": {
2026-06-20T03:13:21.0584872Z           "complete": true,
2026-06-20T03:13:21.0584986Z           "evidence": [
2026-06-20T03:13:21.0585087Z             {
2026-06-20T03:13:21.0585239Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.0585355Z               "line": 445
2026-06-20T03:13:21.0585459Z             },
2026-06-20T03:13:21.0585558Z             {
2026-06-20T03:13:21.0585717Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-20T03:13:21.0585826Z               "line": 56
2026-06-20T03:13:21.0585935Z             }
2026-06-20T03:13:21.0586036Z           ]
2026-06-20T03:13:21.0586141Z         },
2026-06-20T03:13:21.0586250Z         "int": {
2026-06-20T03:13:21.0586527Z           "complete": false,
2026-06-20T03:13:21.0586643Z           "evidence": []
2026-06-20T03:13:21.0586840Z         },
2026-06-20T03:13:21.0586950Z         "unit": {
2026-06-20T03:13:21.0587058Z           "complete": true,
2026-06-20T03:13:21.0587171Z           "evidence": [
2026-06-20T03:13:21.0587272Z             {
2026-06-20T03:13:21.0587434Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-20T03:13:21.0587544Z               "line": 288
2026-06-20T03:13:21.0587645Z             },
2026-06-20T03:13:21.0587749Z             {
2026-06-20T03:13:21.0587902Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-20T03:13:21.0588021Z               "line": 325
2026-06-20T03:13:21.0588116Z             }
2026-06-20T03:13:21.0588217Z           ]
2026-06-20T03:13:21.0588321Z         }
2026-06-20T03:13:21.0588421Z       }
2026-06-20T03:13:21.0588526Z     },
2026-06-20T03:13:21.0588626Z     {
2026-06-20T03:13:21.0588750Z       "id": "REQ-DAEMON-9",
2026-06-20T03:13:21.0591245Z       "title": "Net-bind boot-race resilience: a daemon that comes up net-less (NetHost::start failed — e.g. the systemd unit autostarted before the network/DNS stack was ready, `Failed to create an address lookup service`) must SELF-HEAL — retry the net bring-up in the background with capped backoff and, on success, attach net to the broker + spawn the dispatcher/peer-pump (which today are gated on `net_up` at boot and so never start, leaving the node silently unreachable until a manual restart — kitsubito 2026-06-08). Status surfaces the net-less state honestly (a net-less broker renders as 'no connection', not only a pump-STALLED line with a bogus pre-boot heartbeat age). The installer's autostart unit waits for the network (`Wants=/After=network-online.target`) as belt-and-suspenders.",
2026-06-20T03:13:21.0591384Z       "requiredStages": [
2026-06-20T03:13:21.0591489Z         "impl",
2026-06-20T03:13:21.0591603Z         "unit"
2026-06-20T03:13:21.0591704Z       ],
2026-06-20T03:13:21.0591833Z       "stages": {
2026-06-20T03:13:21.0591937Z         "doc": {
2026-06-20T03:13:21.0592062Z           "complete": false,
2026-06-20T03:13:21.0592190Z           "evidence": []
2026-06-20T03:13:21.0592289Z         },
2026-06-20T03:13:21.0592398Z         "impl": {
2026-06-20T03:13:21.0592507Z           "complete": true,
2026-06-20T03:13:21.0592615Z           "evidence": [
2026-06-20T03:13:21.0592711Z             {
2026-06-20T03:13:21.0592878Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0593001Z               "line": 276
2026-06-20T03:13:21.0593112Z             },
2026-06-20T03:13:21.0593216Z             {
2026-06-20T03:13:21.0593360Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.0593479Z               "line": 1115
2026-06-20T03:13:21.0593583Z             },
2026-06-20T03:13:21.0593694Z             {
2026-06-20T03:13:21.0593841Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.0593950Z               "line": 197
2026-06-20T03:13:21.0594056Z             },
2026-06-20T03:13:21.0594156Z             {
2026-06-20T03:13:21.0594304Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.0594418Z               "line": 344
2026-06-20T03:13:21.0594527Z             },
2026-06-20T03:13:21.0594633Z             {
2026-06-20T03:13:21.0594784Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.0594900Z               "line": 381
2026-06-20T03:13:21.0595001Z             },
2026-06-20T03:13:21.0595108Z             {
2026-06-20T03:13:21.0595242Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0595357Z               "line": 2075
2026-06-20T03:13:21.0595465Z             }
2026-06-20T03:13:21.0595566Z           ]
2026-06-20T03:13:21.0595657Z         },
2026-06-20T03:13:21.0595766Z         "int": {
2026-06-20T03:13:21.0595881Z           "complete": false,
2026-06-20T03:13:21.0595986Z           "evidence": []
2026-06-20T03:13:21.0596085Z         },
2026-06-20T03:13:21.0596296Z         "unit": {
2026-06-20T03:13:21.0596410Z           "complete": true,
2026-06-20T03:13:21.0596520Z           "evidence": [
2026-06-20T03:13:21.0596720Z             {
2026-06-20T03:13:21.0596873Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.0596986Z               "line": 1158
2026-06-20T03:13:21.0597096Z             },
2026-06-20T03:13:21.0597198Z             {
2026-06-20T03:13:21.0597329Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0597448Z               "line": 10580
2026-06-20T03:13:21.0597549Z             }
2026-06-20T03:13:21.0597651Z           ]
2026-06-20T03:13:21.0597751Z         }
2026-06-20T03:13:21.0597856Z       }
2026-06-20T03:13:21.0597957Z     },
2026-06-20T03:13:21.0598056Z     {
2026-06-20T03:13:21.0598176Z       "id": "REQ-DOCS-1",
2026-06-20T03:13:21.0598404Z       "title": "Dual-audience docs (human + AI dev-agent), markdown once / two depths",
2026-06-20T03:13:21.0598524Z       "requiredStages": [
2026-06-20T03:13:21.0598628Z         "doc",
2026-06-20T03:13:21.0598743Z         "impl"
2026-06-20T03:13:21.0598848Z       ],
2026-06-20T03:13:21.0599224Z       "stages": {
2026-06-20T03:13:21.0599339Z         "doc": {
2026-06-20T03:13:21.0599455Z           "complete": true,
2026-06-20T03:13:21.0599567Z           "evidence": [
2026-06-20T03:13:21.0599668Z             {
2026-06-20T03:13:21.0599812Z               "path": "docs-site/src/index.md",
2026-06-20T03:13:21.0599925Z               "line": 50
2026-06-20T03:13:21.0600027Z             }
2026-06-20T03:13:21.0600131Z           ]
2026-06-20T03:13:21.0600230Z         },
2026-06-20T03:13:21.0600334Z         "impl": {
2026-06-20T03:13:21.0600449Z           "complete": true,
2026-06-20T03:13:21.0600561Z           "evidence": [
2026-06-20T03:13:21.0600666Z             {
2026-06-20T03:13:21.0600815Z               "path": ".github/workflows/docs-publish.yml",
2026-06-20T03:13:21.0600933Z               "line": 12
2026-06-20T03:13:21.0601034Z             },
2026-06-20T03:13:21.0601134Z             {
2026-06-20T03:13:21.0601262Z               "path": "crates/xtask/src/main.rs",
2026-06-20T03:13:21.0601373Z               "line": 14
2026-06-20T03:13:21.0601491Z             }
2026-06-20T03:13:21.0601590Z           ]
2026-06-20T03:13:21.0601697Z         },
2026-06-20T03:13:21.0601796Z         "int": {
2026-06-20T03:13:21.0601905Z           "complete": false,
2026-06-20T03:13:21.0602012Z           "evidence": []
2026-06-20T03:13:21.0602116Z         },
2026-06-20T03:13:21.0602225Z         "unit": {
2026-06-20T03:13:21.0602336Z           "complete": false,
2026-06-20T03:13:21.0602454Z           "evidence": []
2026-06-20T03:13:21.0602574Z         }
2026-06-20T03:13:21.0602674Z       }
2026-06-20T03:13:21.0602778Z     },
2026-06-20T03:13:21.0602882Z     {
2026-06-20T03:13:21.0603001Z       "id": "REQ-DOCS-2",
2026-06-20T03:13:21.0603184Z       "title": "Sub-10-minute runnable killer quickstart per audience",
2026-06-20T03:13:21.0603304Z       "requiredStages": [
2026-06-20T03:13:21.0603405Z         "doc",
2026-06-20T03:13:21.0603509Z         "int"
2026-06-20T03:13:21.0603610Z       ],
2026-06-20T03:13:21.0603720Z       "stages": {
2026-06-20T03:13:21.0603828Z         "doc": {
2026-06-20T03:13:21.0603944Z           "complete": true,
2026-06-20T03:13:21.0604053Z           "evidence": [
2026-06-20T03:13:21.0604152Z             {
2026-06-20T03:13:21.0604363Z               "path": "docs-site/src/harness-contract/integration-checklist.md",
2026-06-20T03:13:21.0604472Z               "line": 3
2026-06-20T03:13:21.0604583Z             },
2026-06-20T03:13:21.0604687Z             {
2026-06-20T03:13:21.0604845Z               "path": "docs-site/src/quickstart/adapter.md",
2026-06-20T03:13:21.0604950Z               "line": 3
2026-06-20T03:13:21.0605045Z             },
2026-06-20T03:13:21.0605145Z             {
2026-06-20T03:13:21.0605302Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-20T03:13:21.0605407Z               "line": 3
2026-06-20T03:13:21.0605514Z             }
2026-06-20T03:13:21.0605603Z           ]
2026-06-20T03:13:21.0605806Z         },
2026-06-20T03:13:21.0605912Z         "impl": {
2026-06-20T03:13:21.0606040Z           "complete": false,
2026-06-20T03:13:21.0606246Z           "evidence": []
2026-06-20T03:13:21.0606350Z         },
2026-06-20T03:13:21.0606456Z         "int": {
2026-06-20T03:13:21.0606565Z           "complete": true,
2026-06-20T03:13:21.0606679Z           "evidence": [
2026-06-20T03:13:21.0606785Z             {
2026-06-20T03:13:21.0606937Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-20T03:13:21.0607041Z               "line": 14
2026-06-20T03:13:21.0607138Z             }
2026-06-20T03:13:21.0607241Z           ]
2026-06-20T03:13:21.0607337Z         },
2026-06-20T03:13:21.0607438Z         "unit": {
2026-06-20T03:13:21.0607552Z           "complete": false,
2026-06-20T03:13:21.0607676Z           "evidence": []
2026-06-20T03:13:21.0607772Z         }
2026-06-20T03:13:21.0607871Z       }
2026-06-20T03:13:21.0607971Z     },
2026-06-20T03:13:21.0608066Z     {
2026-06-20T03:13:21.0608193Z       "id": "REQ-DOCS-3",
2026-06-20T03:13:21.0608441Z       "title": "Diátaxis structure; one canonical way to do X",
2026-06-20T03:13:21.0608569Z       "requiredStages": [
2026-06-20T03:13:21.0608674Z         "doc"
2026-06-20T03:13:21.0608779Z       ],
2026-06-20T03:13:21.0608883Z       "stages": {
2026-06-20T03:13:21.0609056Z         "doc": {
2026-06-20T03:13:21.0609170Z           "complete": true,
2026-06-20T03:13:21.0609284Z           "evidence": [
2026-06-20T03:13:21.0609385Z             {
2026-06-20T03:13:21.0609532Z               "path": "docs-site/src/index.md",
2026-06-20T03:13:21.0609637Z               "line": 42
2026-06-20T03:13:21.0609743Z             }
2026-06-20T03:13:21.0609842Z           ]
2026-06-20T03:13:21.0609947Z         },
2026-06-20T03:13:21.0610044Z         "impl": {
2026-06-20T03:13:21.0610152Z           "complete": false,
2026-06-20T03:13:21.0610257Z           "evidence": []
2026-06-20T03:13:21.0610358Z         },
2026-06-20T03:13:21.0610476Z         "int": {
2026-06-20T03:13:21.0610601Z           "complete": false,
2026-06-20T03:13:21.0610711Z           "evidence": []
2026-06-20T03:13:21.0610819Z         },
2026-06-20T03:13:21.0610933Z         "unit": {
2026-06-20T03:13:21.0611042Z           "complete": false,
2026-06-20T03:13:21.0611145Z           "evidence": []
2026-06-20T03:13:21.0611250Z         }
2026-06-20T03:13:21.0611346Z       }
2026-06-20T03:13:21.0611445Z     },
2026-06-20T03:13:21.0611531Z     {
2026-06-20T03:13:21.0611637Z       "id": "REQ-DOCS-4",
2026-06-20T03:13:21.0611865Z       "title": "Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)",
2026-06-20T03:13:21.0611989Z       "requiredStages": [
2026-06-20T03:13:21.0612098Z         "doc",
2026-06-20T03:13:21.0612199Z         "impl",
2026-06-20T03:13:21.0612304Z         "unit"
2026-06-20T03:13:21.0612404Z       ],
2026-06-20T03:13:21.0612514Z       "stages": {
2026-06-20T03:13:21.0612614Z         "doc": {
2026-06-20T03:13:21.0612733Z           "complete": true,
2026-06-20T03:13:21.0612848Z           "evidence": [
2026-06-20T03:13:21.0612948Z             {
2026-06-20T03:13:21.0613096Z               "path": "docs/DOCS-STRATEGY.md",
2026-06-20T03:13:21.0613211Z               "line": 35
2026-06-20T03:13:21.0613319Z             }
2026-06-20T03:13:21.0613418Z           ]
2026-06-20T03:13:21.0613524Z         },
2026-06-20T03:13:21.0613622Z         "impl": {
2026-06-20T03:13:21.0613726Z           "complete": true,
2026-06-20T03:13:21.0613841Z           "evidence": [
2026-06-20T03:13:21.0613937Z             {
2026-06-20T03:13:21.0614098Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.0614204Z               "line": 746
2026-06-20T03:13:21.0614308Z             },
2026-06-20T03:13:21.0614417Z             {
2026-06-20T03:13:21.0614551Z               "path": "crates/xtask/src/main.rs",
2026-06-20T03:13:21.0614656Z               "line": 15
2026-06-20T03:13:21.0614757Z             }
2026-06-20T03:13:21.0614861Z           ]
2026-06-20T03:13:21.0614961Z         },
2026-06-20T03:13:21.0615171Z         "int": {
2026-06-20T03:13:21.0615286Z           "complete": false,
2026-06-20T03:13:21.0615477Z           "evidence": []
2026-06-20T03:13:21.0615576Z         },
2026-06-20T03:13:21.0615676Z         "unit": {
2026-06-20T03:13:21.0615801Z           "complete": true,
2026-06-20T03:13:21.0615910Z           "evidence": [
2026-06-20T03:13:21.0616016Z             {
2026-06-20T03:13:21.0616158Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.0616267Z               "line": 1682
2026-06-20T03:13:21.0616371Z             }
2026-06-20T03:13:21.0616478Z           ]
2026-06-20T03:13:21.0616581Z         }
2026-06-20T03:13:21.0616681Z       }
2026-06-20T03:13:21.0616773Z     },
2026-06-20T03:13:21.0616877Z     {
2026-06-20T03:13:21.0616987Z       "id": "REQ-DOCS-5",
2026-06-20T03:13:21.0617220Z       "title": "Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked",
2026-06-20T03:13:21.0617330Z       "requiredStages": [
2026-06-20T03:13:21.0617431Z         "impl",
2026-06-20T03:13:21.0617540Z         "int"
2026-06-20T03:13:21.0617645Z       ],
2026-06-20T03:13:21.0617741Z       "stages": {
2026-06-20T03:13:21.0617850Z         "doc": {
2026-06-20T03:13:21.0617965Z           "complete": false,
2026-06-20T03:13:21.0618075Z           "evidence": []
2026-06-20T03:13:21.0618179Z         },
2026-06-20T03:13:21.0618270Z         "impl": {
2026-06-20T03:13:21.0618380Z           "complete": true,
2026-06-20T03:13:21.0618488Z           "evidence": [
2026-06-20T03:13:21.0618587Z             {
2026-06-20T03:13:21.0618735Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.0618838Z               "line": 747
2026-06-20T03:13:21.0619011Z             },
2026-06-20T03:13:21.0619106Z             {
2026-06-20T03:13:21.0619243Z               "path": "crates/xtask/src/main.rs",
2026-06-20T03:13:21.0619354Z               "line": 113
2026-06-20T03:13:21.0619453Z             }
2026-06-20T03:13:21.0619553Z           ]
2026-06-20T03:13:21.0619645Z         },
2026-06-20T03:13:21.0619758Z         "int": {
2026-06-20T03:13:21.0619873Z           "complete": true,
2026-06-20T03:13:21.0619974Z           "evidence": [
2026-06-20T03:13:21.0620078Z             {
2026-06-20T03:13:21.0620207Z               "path": ".github/workflows/ci.yml",
2026-06-20T03:13:21.0620317Z               "line": 126
2026-06-20T03:13:21.0620422Z             },
2026-06-20T03:13:21.0620522Z             {
2026-06-20T03:13:21.0620674Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.0620788Z               "line": 1719
2026-06-20T03:13:21.0620890Z             }
2026-06-20T03:13:21.0620989Z           ]
2026-06-20T03:13:21.0621084Z         },
2026-06-20T03:13:21.0621186Z         "unit": {
2026-06-20T03:13:21.0621308Z           "complete": false,
2026-06-20T03:13:21.0621412Z           "evidence": []
2026-06-20T03:13:21.0621508Z         }
2026-06-20T03:13:21.0621597Z       }
2026-06-20T03:13:21.0621691Z     },
2026-06-20T03:13:21.0621796Z     {
2026-06-20T03:13:21.0621902Z       "id": "REQ-DOCS-6",
2026-06-20T03:13:21.0622274Z       "title": "spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)",
2026-06-20T03:13:21.0622382Z       "requiredStages": [
2026-06-20T03:13:21.0622488Z         "impl",
2026-06-20T03:13:21.0622593Z         "unit",
2026-06-20T03:13:21.0622692Z         "int"
2026-06-20T03:13:21.0622798Z       ],
2026-06-20T03:13:21.0622897Z       "stages": {
2026-06-20T03:13:21.0623002Z         "doc": {
2026-06-20T03:13:21.0623113Z           "complete": true,
2026-06-20T03:13:21.0623222Z           "evidence": [
2026-06-20T03:13:21.0623326Z             {
2026-06-20T03:13:21.0623495Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-20T03:13:21.0623613Z               "line": 4
2026-06-20T03:13:21.0623704Z             }
2026-06-20T03:13:21.0623814Z           ]
2026-06-20T03:13:21.0623908Z         },
2026-06-20T03:13:21.0624026Z         "impl": {
2026-06-20T03:13:21.0624150Z           "complete": true,
2026-06-20T03:13:21.0624363Z           "evidence": [
2026-06-20T03:13:21.0624473Z             {
2026-06-20T03:13:21.0624692Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0624811Z               "line": 5240
2026-06-20T03:13:21.0624911Z             }
2026-06-20T03:13:21.0625017Z           ]
2026-06-20T03:13:21.0625126Z         },
2026-06-20T03:13:21.0625216Z         "int": {
2026-06-20T03:13:21.0625327Z           "complete": true,
2026-06-20T03:13:21.0625436Z           "evidence": [
2026-06-20T03:13:21.0625535Z             {
2026-06-20T03:13:21.0625685Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-20T03:13:21.0625793Z               "line": 39
2026-06-20T03:13:21.0625903Z             }
2026-06-20T03:13:21.0626009Z           ]
2026-06-20T03:13:21.0626112Z         },
2026-06-20T03:13:21.0626213Z         "unit": {
2026-06-20T03:13:21.0626334Z           "complete": true,
2026-06-20T03:13:21.0626446Z           "evidence": [
2026-06-20T03:13:21.0626552Z             {
2026-06-20T03:13:21.0626705Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0626813Z               "line": 10742
2026-06-20T03:13:21.0626918Z             }
2026-06-20T03:13:21.0627014Z           ]
2026-06-20T03:13:21.0627118Z         }
2026-06-20T03:13:21.0627208Z       }
2026-06-20T03:13:21.0627314Z     },
2026-06-20T03:13:21.0627418Z     {
2026-06-20T03:13:21.0627527Z       "id": "REQ-ELEVATE-1",
2026-06-20T03:13:21.0630782Z       "title": "Cross-platform self-elevating re-launch for privilege-gated commands: a pure decision seam `decide_elevation_path(os, elevation, interactive_tty, has_display, has_pkexec, has_term_emulator) -> ElevatePath{AlreadyElevated, InlineSudo, UacWindow, Pkexec, TerminalEmulator, PrintHint}` selecting how to re-acquire privilege, and the per-OS impure launchers it dispatches — Windows UAC console (ShellExecuteW `runas` on the abs-exe + verbatim argv; the elevated child does the work, prints 'You can close this window', and pauses for a keypress; the original prints 'Elevated terminal launched…' and exits 0; NEVER pipes the child's stdout back across the privilege boundary), Linux desktop pkexec (preferred, native polkit GUI auth) else x-terminal-emulator -e sudo (fallback list x-terminal-emulator→gnome-terminal→konsole→xterm), the existing interactive-TTY inline sudo, and the headless/no-path floor that prints the absolute-path command. Reused by every gated command (not subnet-specific). Generalizes should_auto_elevate.",
2026-06-20T03:13:21.0630939Z       "requiredStages": [
2026-06-20T03:13:21.0631038Z         "doc",
2026-06-20T03:13:21.0631149Z         "impl",
2026-06-20T03:13:21.0631253Z         "unit"
2026-06-20T03:13:21.0631358Z       ],
2026-06-20T03:13:21.0631464Z       "stages": {
2026-06-20T03:13:21.0631573Z         "doc": {
2026-06-20T03:13:21.0631698Z           "complete": true,
2026-06-20T03:13:21.0631803Z           "evidence": [
2026-06-20T03:13:21.0631906Z             {
2026-06-20T03:13:21.0632015Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.0632148Z               "line": 687
2026-06-20T03:13:21.0632252Z             }
2026-06-20T03:13:21.0632356Z           ]
2026-06-20T03:13:21.0632472Z         },
2026-06-20T03:13:21.0632571Z         "impl": {
2026-06-20T03:13:21.0632690Z           "complete": true,
2026-06-20T03:13:21.0632800Z           "evidence": [
2026-06-20T03:13:21.0632905Z             {
2026-06-20T03:13:21.0633039Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0633153Z               "line": 3572
2026-06-20T03:13:21.0633257Z             },
2026-06-20T03:13:21.0633363Z             {
2026-06-20T03:13:21.0633501Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0633610Z               "line": 3617
2026-06-20T03:13:21.0633716Z             },
2026-06-20T03:13:21.0633824Z             {
2026-06-20T03:13:21.0633954Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0634064Z               "line": 3679
2026-06-20T03:13:21.0634168Z             },
2026-06-20T03:13:21.0634269Z             {
2026-06-20T03:13:21.0634525Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T03:13:21.0634644Z               "line": 92
2026-06-20T03:13:21.0634851Z             },
2026-06-20T03:13:21.0634952Z             {
2026-06-20T03:13:21.0635086Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T03:13:21.0635194Z               "line": 148
2026-06-20T03:13:21.0635305Z             }
2026-06-20T03:13:21.0635410Z           ]
2026-06-20T03:13:21.0635504Z         },
2026-06-20T03:13:21.0635610Z         "int": {
2026-06-20T03:13:21.0635729Z           "complete": false,
2026-06-20T03:13:21.0635848Z           "evidence": []
2026-06-20T03:13:21.0635944Z         },
2026-06-20T03:13:21.0636053Z         "unit": {
2026-06-20T03:13:21.0636168Z           "complete": true,
2026-06-20T03:13:21.0636288Z           "evidence": [
2026-06-20T03:13:21.0636387Z             {
2026-06-20T03:13:21.0636521Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T03:13:21.0636635Z               "line": 442
2026-06-20T03:13:21.0636740Z             },
2026-06-20T03:13:21.0636836Z             {
2026-06-20T03:13:21.0636974Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T03:13:21.0637102Z               "line": 460
2026-06-20T03:13:21.0637208Z             }
2026-06-20T03:13:21.0637298Z           ]
2026-06-20T03:13:21.0637406Z         }
2026-06-20T03:13:21.0637507Z       }
2026-06-20T03:13:21.0637608Z     },
2026-06-20T03:13:21.0637721Z     {
2026-06-20T03:13:21.0637865Z       "id": "REQ-ENDPOINT-LIST-MERGE-LOCAL",
2026-06-20T03:13:21.0639728Z       "title": "`spt endpoint list` always merges this node's LOCAL (unadvertised) perches into the view; the `--local` flag is REMOVED (operator decision 2026-06-17). Rationale: `spt whoami` is a thin alias of `endpoint list` — a just-online agent running `whoami` must see its OWN perch, or it gets an omitted-self view ('chaos'). FIX: drop the `--local` flag + its `--detail` conflict test + the v0.10.0 REQ-PICKER-5 hint line (cli.rs:1678) + cmd_list_local; the bare list merges local perches into the subnet view; fix the whoami alias path accordingly. Run `cargo run -p xtask -- gen` (docs-drift, DEFAULT target). (v0.12.1)",
2026-06-20T03:13:21.0639864Z       "requiredStages": [
2026-06-20T03:13:21.0639973Z         "doc",
2026-06-20T03:13:21.0640078Z         "impl",
2026-06-20T03:13:21.0640179Z         "unit"
2026-06-20T03:13:21.0640283Z       ],
2026-06-20T03:13:21.0640383Z       "stages": {
2026-06-20T03:13:21.0640488Z         "doc": {
2026-06-20T03:13:21.0640607Z           "complete": true,
2026-06-20T03:13:21.0640723Z           "evidence": [
2026-06-20T03:13:21.0640817Z             {
2026-06-20T03:13:21.0640931Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.0641042Z               "line": 711
2026-06-20T03:13:21.0641137Z             }
2026-06-20T03:13:21.0641231Z           ]
2026-06-20T03:13:21.0641333Z         },
2026-06-20T03:13:21.0641437Z         "impl": {
2026-06-20T03:13:21.0641556Z           "complete": true,
2026-06-20T03:13:21.0641667Z           "evidence": [
2026-06-20T03:13:21.0641780Z             {
2026-06-20T03:13:21.0641909Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0642030Z               "line": 1721
2026-06-20T03:13:21.0642133Z             },
2026-06-20T03:13:21.0642224Z             {
2026-06-20T03:13:21.0642363Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0642476Z               "line": 3125
2026-06-20T03:13:21.0642575Z             },
2026-06-20T03:13:21.0642666Z             {
2026-06-20T03:13:21.0642807Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0642917Z               "line": 3134
2026-06-20T03:13:21.0643027Z             }
2026-06-20T03:13:21.0643131Z           ]
2026-06-20T03:13:21.0643236Z         },
2026-06-20T03:13:21.0643342Z         "int": {
2026-06-20T03:13:21.0643450Z           "complete": false,
2026-06-20T03:13:21.0643565Z           "evidence": []
2026-06-20T03:13:21.0643665Z         },
2026-06-20T03:13:21.0643774Z         "unit": {
2026-06-20T03:13:21.0643894Z           "complete": true,
2026-06-20T03:13:21.0644113Z           "evidence": [
2026-06-20T03:13:21.0644219Z             {
2026-06-20T03:13:21.0644447Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0644568Z               "line": 7950
2026-06-20T03:13:21.0644666Z             },
2026-06-20T03:13:21.0644776Z             {
2026-06-20T03:13:21.0644911Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0645019Z               "line": 7991
2026-06-20T03:13:21.0645123Z             }
2026-06-20T03:13:21.0645219Z           ]
2026-06-20T03:13:21.0645312Z         }
2026-06-20T03:13:21.0645411Z       }
2026-06-20T03:13:21.0645517Z     },
2026-06-20T03:13:21.0645613Z     {
2026-06-20T03:13:21.0645745Z       "id": "REQ-ENDPOINT-PURGE",
2026-06-20T03:13:21.0650615Z       "title": "`spt endpoint purge <id>` fully removes an endpoint AND every record keyed on it — the formal teardown devs/CI need for clean test setup/reset. NOT consent-gated (a local dev/test op — no peer consent). OFFLINE-ONLY: refuses while the endpoint is online / daemon-hosted (deleting records out from under a live host risks the daemon re-creating or re-hosting mid-purge); `--force` STOPS it first (endpoint stop → wait for the daemon reconcile to un-host + reap the Psyche) THEN purges. Confirms interactively unless `--yes` (the CI path). Refuses purging the CALLER's OWN running id. All LOCAL — purge reaches only THIS node's records; a remote endpoint's records can't be touched, and its subnet-registry rows decay via the epoch-lease eviction (REQ-HAZARD-REGISTRY-DECAY). Removes: (1) the perch dir TREE recursively — owlery/<id>/ incl every nested {id}-psyche / {id}-w* / shells child (info.json, ready marker, sessions.log ledger, spool.db, inbox, .idle/.more-done sentinels, auth token); (2) the registry address (registry::unregister_address); (3) the context store — ContextStore::remove_endpoint(id): the a-<id> branch+worktree + the <id>/ rows from every p-<project> branch (the same fn `fork --delete-source` already uses); (4) node-local trust rows keyed on the id — access.json + visibility.json. Reuse-heavy: it is `fork --delete-source` generalized (recursive perch remove + unregister + remove_endpoint) + the trust-record cleanup; `endpoint rename` already enumerates the same record set + uses the same offline-only gate. (v0.12.0)",
2026-06-20T03:13:21.0650796Z       "requiredStages": [
2026-06-20T03:13:21.0650910Z         "doc",
2026-06-20T03:13:21.0651020Z         "impl",
2026-06-20T03:13:21.0651129Z         "unit",
2026-06-20T03:13:21.0651244Z         "int"
2026-06-20T03:13:21.0651344Z       ],
2026-06-20T03:13:21.0651449Z       "stages": {
2026-06-20T03:13:21.0651549Z         "doc": {
2026-06-20T03:13:21.0651669Z           "complete": true,
2026-06-20T03:13:21.0651782Z           "evidence": [
2026-06-20T03:13:21.0651883Z             {
2026-06-20T03:13:21.0652016Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.0652116Z               "line": 163
2026-06-20T03:13:21.0652213Z             }
2026-06-20T03:13:21.0652308Z           ]
2026-06-20T03:13:21.0652431Z         },
2026-06-20T03:13:21.0652533Z         "impl": {
2026-06-20T03:13:21.0652660Z           "complete": true,
2026-06-20T03:13:21.0652779Z           "evidence": [
2026-06-20T03:13:21.0652871Z             {
2026-06-20T03:13:21.0653026Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-20T03:13:21.0653130Z               "line": 105
2026-06-20T03:13:21.0653226Z             },
2026-06-20T03:13:21.0653334Z             {
2026-06-20T03:13:21.0653482Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0653597Z               "line": 7219
2026-06-20T03:13:21.0653700Z             }
2026-06-20T03:13:21.0653806Z           ]
2026-06-20T03:13:21.0653911Z         },
2026-06-20T03:13:21.0654025Z         "int": {
2026-06-20T03:13:21.0654145Z           "complete": true,
2026-06-20T03:13:21.0654249Z           "evidence": [
2026-06-20T03:13:21.0654354Z             {
2026-06-20T03:13:21.0654489Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0654717Z               "line": 7384
2026-06-20T03:13:21.0654818Z             }
2026-06-20T03:13:21.0654921Z           ]
2026-06-20T03:13:21.0655118Z         },
2026-06-20T03:13:21.0655217Z         "unit": {
2026-06-20T03:13:21.0655332Z           "complete": true,
2026-06-20T03:13:21.0655443Z           "evidence": [
2026-06-20T03:13:21.0655546Z             {
2026-06-20T03:13:21.0655678Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0655798Z               "line": 7355
2026-06-20T03:13:21.0655900Z             }
2026-06-20T03:13:21.0655995Z           ]
2026-06-20T03:13:21.0656106Z         }
2026-06-20T03:13:21.0656201Z       }
2026-06-20T03:13:21.0656305Z     },
2026-06-20T03:13:21.0656407Z     {
2026-06-20T03:13:21.0656544Z       "id": "REQ-ENDPOINT-STOP-OFFLINE",
2026-06-20T03:13:21.0657894Z       "title": "H3: `spt endpoint stop <id>` marks the endpoint OFFLINE (alive=false), not merely de-readied. cmd_stop (cli.rs:2994-3010) removes the ready marker + unregisters the address but does NOT set status offline, so a stopped daemon-hosted endpoint still reports alive=true (status=online latch). FIX: add set_status(perch, STATUS_OFFLINE) to cmd_stop — folds with B2 (same setter). Unit: stop → is_perch_alive=false / alive=false. (v0.12.0)",
2026-06-20T03:13:21.0658024Z       "requiredStages": [
2026-06-20T03:13:21.0658136Z         "impl",
2026-06-20T03:13:21.0658237Z         "unit"
2026-06-20T03:13:21.0658334Z       ],
2026-06-20T03:13:21.0658441Z       "stages": {
2026-06-20T03:13:21.0658545Z         "doc": {
2026-06-20T03:13:21.0658670Z           "complete": false,
2026-06-20T03:13:21.0658775Z           "evidence": []
2026-06-20T03:13:21.0658884Z         },
2026-06-20T03:13:21.0659066Z         "impl": {
2026-06-20T03:13:21.0659194Z           "complete": true,
2026-06-20T03:13:21.0659314Z           "evidence": [
2026-06-20T03:13:21.0659414Z             {
2026-06-20T03:13:21.0659543Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0659652Z               "line": 3165
2026-06-20T03:13:21.0659776Z             }
2026-06-20T03:13:21.0659881Z           ]
2026-06-20T03:13:21.0659987Z         },
2026-06-20T03:13:21.0660120Z         "int": {
2026-06-20T03:13:21.0660226Z           "complete": false,
2026-06-20T03:13:21.0660344Z           "evidence": []
2026-06-20T03:13:21.0660439Z         },
2026-06-20T03:13:21.0660550Z         "unit": {
2026-06-20T03:13:21.0660658Z           "complete": true,
2026-06-20T03:13:21.0660772Z           "evidence": [
2026-06-20T03:13:21.0660877Z             {
2026-06-20T03:13:21.0661013Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0661131Z               "line": 7331
2026-06-20T03:13:21.0661222Z             }
2026-06-20T03:13:21.0661332Z           ]
2026-06-20T03:13:21.0661432Z         }
2026-06-20T03:13:21.0661537Z       }
2026-06-20T03:13:21.0661642Z     },
2026-06-20T03:13:21.0661741Z     {
2026-06-20T03:13:21.0661862Z       "id": "REQ-EP-1",
2026-06-20T03:13:21.0662023Z       "title": "Day-one endpoint types; open type system",
2026-06-20T03:13:21.0662186Z       "requiredStages": [
2026-06-20T03:13:21.0662281Z         "impl",
2026-06-20T03:13:21.0662395Z         "unit"
2026-06-20T03:13:21.0662501Z       ],
2026-06-20T03:13:21.0662605Z       "stages": {
2026-06-20T03:13:21.0662714Z         "doc": {
2026-06-20T03:13:21.0662830Z           "complete": false,
2026-06-20T03:13:21.0662948Z           "evidence": []
2026-06-20T03:13:21.0663044Z         },
2026-06-20T03:13:21.0663150Z         "impl": {
2026-06-20T03:13:21.0663267Z           "complete": true,
2026-06-20T03:13:21.0663378Z           "evidence": [
2026-06-20T03:13:21.0663489Z             {
2026-06-20T03:13:21.0663644Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-20T03:13:21.0663758Z               "line": 77
2026-06-20T03:13:21.0663852Z             },
2026-06-20T03:13:21.0663960Z             {
2026-06-20T03:13:21.0664109Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-20T03:13:21.0664219Z               "line": 94
2026-06-20T03:13:21.0664323Z             }
2026-06-20T03:13:21.0664524Z           ]
2026-06-20T03:13:21.0664633Z         },
2026-06-20T03:13:21.0664734Z         "int": {
2026-06-20T03:13:21.0664938Z           "complete": false,
2026-06-20T03:13:21.0665053Z           "evidence": []
2026-06-20T03:13:21.0665157Z         },
2026-06-20T03:13:21.0665267Z         "unit": {
2026-06-20T03:13:21.0665383Z           "complete": true,
2026-06-20T03:13:21.0665495Z           "evidence": [
2026-06-20T03:13:21.0665596Z             {
2026-06-20T03:13:21.0665754Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-20T03:13:21.0665859Z               "line": 161
2026-06-20T03:13:21.0665960Z             },
2026-06-20T03:13:21.0666065Z             {
2026-06-20T03:13:21.0666220Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-20T03:13:21.0666334Z               "line": 178
2026-06-20T03:13:21.0666428Z             }
2026-06-20T03:13:21.0666532Z           ]
2026-06-20T03:13:21.0666632Z         }
2026-06-20T03:13:21.0666724Z       }
2026-06-20T03:13:21.0666827Z     },
2026-06-20T03:13:21.0666928Z     {
2026-06-20T03:13:21.0667038Z       "id": "REQ-EP-2",
2026-06-20T03:13:21.0667238Z       "title": "Agent endpoints vs Shells distinction in the type model",
2026-06-20T03:13:21.0667357Z       "requiredStages": [
2026-06-20T03:13:21.0667466Z         "impl",
2026-06-20T03:13:21.0667568Z         "unit"
2026-06-20T03:13:21.0667677Z       ],
2026-06-20T03:13:21.0667781Z       "stages": {
2026-06-20T03:13:21.0667892Z         "doc": {
2026-06-20T03:13:21.0668001Z           "complete": false,
2026-06-20T03:13:21.0668115Z           "evidence": []
2026-06-20T03:13:21.0668226Z         },
2026-06-20T03:13:21.0668321Z         "impl": {
2026-06-20T03:13:21.0668434Z           "complete": true,
2026-06-20T03:13:21.0668545Z           "evidence": [
2026-06-20T03:13:21.0668654Z             {
2026-06-20T03:13:21.0668798Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-20T03:13:21.0668918Z               "line": 114
2026-06-20T03:13:21.0669115Z             },
2026-06-20T03:13:21.0669226Z             {
2026-06-20T03:13:21.0669392Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-20T03:13:21.0669526Z               "line": 131
2026-06-20T03:13:21.0669631Z             },
2026-06-20T03:13:21.0669731Z             {
2026-06-20T03:13:21.0669870Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-20T03:13:21.0669988Z               "line": 138
2026-06-20T03:13:21.0670093Z             }
2026-06-20T03:13:21.0670203Z           ]
2026-06-20T03:13:21.0670308Z         },
2026-06-20T03:13:21.0670412Z         "int": {
2026-06-20T03:13:21.0670532Z           "complete": false,
2026-06-20T03:13:21.0670646Z           "evidence": []
2026-06-20T03:13:21.0670747Z         },
2026-06-20T03:13:21.0670852Z         "unit": {
2026-06-20T03:13:21.0674280Z           "complete": true,
2026-06-20T03:13:21.0674426Z           "evidence": [
2026-06-20T03:13:21.0674535Z             {
2026-06-20T03:13:21.0674698Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-20T03:13:21.0674864Z               "line": 190
2026-06-20T03:13:21.0674984Z             },
2026-06-20T03:13:21.0675084Z             {
2026-06-20T03:13:21.0675246Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-20T03:13:21.0675356Z               "line": 208
2026-06-20T03:13:21.0675465Z             },
2026-06-20T03:13:21.0675556Z             {
2026-06-20T03:13:21.0675718Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-20T03:13:21.0675827Z               "line": 221
2026-06-20T03:13:21.0675928Z             }
2026-06-20T03:13:21.0676033Z           ]
2026-06-20T03:13:21.0676137Z         }
2026-06-20T03:13:21.0676239Z       }
2026-06-20T03:13:21.0676343Z     },
2026-06-20T03:13:21.0676447Z     {
2026-06-20T03:13:21.0676568Z       "id": "REQ-EP-3",
2026-06-20T03:13:21.0676785Z       "title": "Messaging payloads carry typed operation commands + file blobs",
2026-06-20T03:13:21.0676909Z       "requiredStages": [
2026-06-20T03:13:21.0677017Z         "impl",
2026-06-20T03:13:21.0677274Z         "unit"
2026-06-20T03:13:21.0677378Z       ],
2026-06-20T03:13:21.0677478Z       "stages": {
2026-06-20T03:13:21.0677679Z         "doc": {
2026-06-20T03:13:21.0677803Z           "complete": false,
2026-06-20T03:13:21.0677904Z           "evidence": []
2026-06-20T03:13:21.0678008Z         },
2026-06-20T03:13:21.0678123Z         "impl": {
2026-06-20T03:13:21.0678233Z           "complete": true,
2026-06-20T03:13:21.0678342Z           "evidence": [
2026-06-20T03:13:21.0678447Z             {
2026-06-20T03:13:21.0678594Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-20T03:13:21.0678714Z               "line": 31
2026-06-20T03:13:21.0678815Z             },
2026-06-20T03:13:21.0678914Z             {
2026-06-20T03:13:21.0679291Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-20T03:13:21.0679407Z               "line": 49
2026-06-20T03:13:21.0679506Z             }
2026-06-20T03:13:21.0679609Z           ]
2026-06-20T03:13:21.0679709Z         },
2026-06-20T03:13:21.0679815Z         "int": {
2026-06-20T03:13:21.0679938Z           "complete": false,
2026-06-20T03:13:21.0680043Z           "evidence": []
2026-06-20T03:13:21.0680153Z         },
2026-06-20T03:13:21.0680262Z         "unit": {
2026-06-20T03:13:21.0680377Z           "complete": true,
2026-06-20T03:13:21.0680487Z           "evidence": [
2026-06-20T03:13:21.0680586Z             {
2026-06-20T03:13:21.0680740Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-20T03:13:21.0680849Z               "line": 156
2026-06-20T03:13:21.0680954Z             },
2026-06-20T03:13:21.0681055Z             {
2026-06-20T03:13:21.0681197Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-20T03:13:21.0681307Z               "line": 164
2026-06-20T03:13:21.0681413Z             },
2026-06-20T03:13:21.0681521Z             {
2026-06-20T03:13:21.0681656Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-20T03:13:21.0681774Z               "line": 177
2026-06-20T03:13:21.0681878Z             },
2026-06-20T03:13:21.0681982Z             {
2026-06-20T03:13:21.0682133Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-20T03:13:21.0682247Z               "line": 200
2026-06-20T03:13:21.0682353Z             },
2026-06-20T03:13:21.0682443Z             {
2026-06-20T03:13:21.0682596Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-20T03:13:21.0682706Z               "line": 216
2026-06-20T03:13:21.0682810Z             },
2026-06-20T03:13:21.0682915Z             {
2026-06-20T03:13:21.0683058Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-20T03:13:21.0683172Z               "line": 233
2026-06-20T03:13:21.0683269Z             }
2026-06-20T03:13:21.0683368Z           ]
2026-06-20T03:13:21.0683472Z         }
2026-06-20T03:13:21.0683569Z       }
2026-06-20T03:13:21.0683668Z     },
2026-06-20T03:13:21.0683763Z     {
2026-06-20T03:13:21.0683884Z       "id": "REQ-EP-4",
2026-06-20T03:13:21.0684054Z       "title": "PresenceChannel broker endpoint (seam day-one)",
2026-06-20T03:13:21.0684179Z       "requiredStages": [
2026-06-20T03:13:21.0684289Z         "impl",
2026-06-20T03:13:21.0684398Z         "unit"
2026-06-20T03:13:21.0684494Z       ],
2026-06-20T03:13:21.0684599Z       "stages": {
2026-06-20T03:13:21.0684703Z         "doc": {
2026-06-20T03:13:21.0684816Z           "complete": false,
2026-06-20T03:13:21.0684921Z           "evidence": []
2026-06-20T03:13:21.0685019Z         },
2026-06-20T03:13:21.0685128Z         "impl": {
2026-06-20T03:13:21.0685249Z           "complete": true,
2026-06-20T03:13:21.0685358Z           "evidence": [
2026-06-20T03:13:21.0685472Z             {
2026-06-20T03:13:21.0685621Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T03:13:21.0685730Z               "line": 718
2026-06-20T03:13:21.0685831Z             },
2026-06-20T03:13:21.0685935Z             {
2026-06-20T03:13:21.0686082Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T03:13:21.0686193Z               "line": 1079
2026-06-20T03:13:21.0686297Z             },
2026-06-20T03:13:21.0686499Z             {
2026-06-20T03:13:21.0686635Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.0686841Z               "line": 2068
2026-06-20T03:13:21.0686945Z             },
2026-06-20T03:13:21.0687041Z             {
2026-06-20T03:13:21.0687180Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-20T03:13:21.0687288Z               "line": 118
2026-06-20T03:13:21.0687388Z             },
2026-06-20T03:13:21.0687488Z             {
2026-06-20T03:13:21.0687633Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-20T03:13:21.0687743Z               "line": 681
2026-06-20T03:13:21.0687840Z             },
2026-06-20T03:13:21.0687944Z             {
2026-06-20T03:13:21.0688078Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-20T03:13:21.0688192Z               "line": 818
2026-06-20T03:13:21.0688300Z             },
2026-06-20T03:13:21.0688402Z             {
2026-06-20T03:13:21.0688549Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T03:13:21.0688673Z               "line": 271
2026-06-20T03:13:21.0688778Z             },
2026-06-20T03:13:21.0688893Z             {
2026-06-20T03:13:21.0689136Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T03:13:21.0689236Z               "line": 458
2026-06-20T03:13:21.0689347Z             },
2026-06-20T03:13:21.0689441Z             {
2026-06-20T03:13:21.0689588Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T03:13:21.0689699Z               "line": 1246
2026-06-20T03:13:21.0689808Z             }
2026-06-20T03:13:21.0689908Z           ]
2026-06-20T03:13:21.0690010Z         },
2026-06-20T03:13:21.0690118Z         "int": {
2026-06-20T03:13:21.0690231Z           "complete": false,
2026-06-20T03:13:21.0690346Z           "evidence": []
2026-06-20T03:13:21.0690442Z         },
2026-06-20T03:13:21.0690555Z         "unit": {
2026-06-20T03:13:21.0690666Z           "complete": true,
2026-06-20T03:13:21.0690771Z           "evidence": [
2026-06-20T03:13:21.0690870Z             {
2026-06-20T03:13:21.0691014Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-20T03:13:21.0691142Z               "line": 909
2026-06-20T03:13:21.0691242Z             },
2026-06-20T03:13:21.0691353Z             {
2026-06-20T03:13:21.0691504Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-20T03:13:21.0691610Z               "line": 76
2026-06-20T03:13:21.0691719Z             },
2026-06-20T03:13:21.0691814Z             {
2026-06-20T03:13:21.0691963Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-20T03:13:21.0692076Z               "line": 147
2026-06-20T03:13:21.0692173Z             }
2026-06-20T03:13:21.0692283Z           ]
2026-06-20T03:13:21.0692381Z         }
2026-06-20T03:13:21.0692485Z       }
2026-06-20T03:13:21.0692586Z     },
2026-06-20T03:13:21.0692689Z     {
2026-06-20T03:13:21.0692803Z       "id": "REQ-EP-5",
2026-06-20T03:13:21.0693495Z       "title": "Concrete shell instantiation model: spawn-mints-instance (vs relink/online), registered-on-node permission + broadcast-is-discovery, per-shell require_approval gate, max_instances_per_owner + over_cap, instance aliasing, discovery scope",
2026-06-20T03:13:21.0693614Z       "requiredStages": [
2026-06-20T03:13:21.0693713Z         "impl",
2026-06-20T03:13:21.0693819Z         "unit",
2026-06-20T03:13:21.0693924Z         "int"
2026-06-20T03:13:21.0694023Z       ],
2026-06-20T03:13:21.0694139Z       "stages": {
2026-06-20T03:13:21.0694243Z         "doc": {
2026-06-20T03:13:21.0694362Z           "complete": false,
2026-06-20T03:13:21.0694468Z           "evidence": []
2026-06-20T03:13:21.0694567Z         },
2026-06-20T03:13:21.0694676Z         "impl": {
2026-06-20T03:13:21.0694797Z           "complete": true,
2026-06-20T03:13:21.0694901Z           "evidence": [
2026-06-20T03:13:21.0695001Z             {
2026-06-20T03:13:21.0695160Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.0695267Z               "line": 367
2026-06-20T03:13:21.0695482Z             },
2026-06-20T03:13:21.0695584Z             {
2026-06-20T03:13:21.0695737Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-20T03:13:21.0695941Z               "line": 18
2026-06-20T03:13:21.0696042Z             },
2026-06-20T03:13:21.0696143Z             {
2026-06-20T03:13:21.0696299Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-20T03:13:21.0696415Z               "line": 63
2026-06-20T03:13:21.0696515Z             },
2026-06-20T03:13:21.0696619Z             {
2026-06-20T03:13:21.0696768Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-20T03:13:21.0696872Z               "line": 92
2026-06-20T03:13:21.0696971Z             },
2026-06-20T03:13:21.0697064Z             {
2026-06-20T03:13:21.0697215Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-20T03:13:21.0697316Z               "line": 167
2026-06-20T03:13:21.0697421Z             },
2026-06-20T03:13:21.0697515Z             {
2026-06-20T03:13:21.0697664Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-20T03:13:21.0697787Z               "line": 179
2026-06-20T03:13:21.0697895Z             },
2026-06-20T03:13:21.0697996Z             {
2026-06-20T03:13:21.0698132Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.0698246Z               "line": 114
2026-06-20T03:13:21.0698347Z             },
2026-06-20T03:13:21.0698452Z             {
2026-06-20T03:13:21.0698599Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-20T03:13:21.0698705Z               "line": 22
2026-06-20T03:13:21.0698809Z             },
2026-06-20T03:13:21.0698899Z             {
2026-06-20T03:13:21.0699133Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-20T03:13:21.0699253Z               "line": 145
2026-06-20T03:13:21.0699353Z             },
2026-06-20T03:13:21.0699448Z             {
2026-06-20T03:13:21.0699597Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-20T03:13:21.0699705Z               "line": 174
2026-06-20T03:13:21.0699815Z             },
2026-06-20T03:13:21.0699907Z             {
2026-06-20T03:13:21.0700048Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-20T03:13:21.0700163Z               "line": 196
2026-06-20T03:13:21.0700269Z             },
2026-06-20T03:13:21.0700368Z             {
2026-06-20T03:13:21.0700517Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-20T03:13:21.0700636Z               "line": 221
2026-06-20T03:13:21.0700725Z             },
2026-06-20T03:13:21.0700830Z             {
2026-06-20T03:13:21.0700974Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-20T03:13:21.0701082Z               "line": 247
2026-06-20T03:13:21.0701183Z             },
2026-06-20T03:13:21.0701293Z             {
2026-06-20T03:13:21.0701439Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-20T03:13:21.0701555Z               "line": 270
2026-06-20T03:13:21.0701655Z             },
2026-06-20T03:13:21.0701759Z             {
2026-06-20T03:13:21.0701917Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.0702026Z               "line": 104
2026-06-20T03:13:21.0702137Z             },
2026-06-20T03:13:21.0702242Z             {
2026-06-20T03:13:21.0702365Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0702476Z               "line": 6068
2026-06-20T03:13:21.0702580Z             },
2026-06-20T03:13:21.0702680Z             {
2026-06-20T03:13:21.0702810Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0702928Z               "line": 6202
2026-06-20T03:13:21.0703022Z             },
2026-06-20T03:13:21.0703118Z             {
2026-06-20T03:13:21.0703259Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0703368Z               "line": 6368
2026-06-20T03:13:21.0703473Z             },
2026-06-20T03:13:21.0703573Z             {
2026-06-20T03:13:21.0703702Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0703827Z               "line": 6896
2026-06-20T03:13:21.0704026Z             }
2026-06-20T03:13:21.0704137Z           ]
2026-06-20T03:13:21.0704240Z         },
2026-06-20T03:13:21.0704451Z         "int": {
2026-06-20T03:13:21.0704565Z           "complete": true,
2026-06-20T03:13:21.0704684Z           "evidence": [
2026-06-20T03:13:21.0704785Z             {
2026-06-20T03:13:21.0704936Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-20T03:13:21.0705047Z               "line": 16
2026-06-20T03:13:21.0705147Z             },
2026-06-20T03:13:21.0705246Z             {
2026-06-20T03:13:21.0705391Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-20T03:13:21.0705490Z               "line": 15
2026-06-20T03:13:21.0705600Z             }
2026-06-20T03:13:21.0705691Z           ]
2026-06-20T03:13:21.0705795Z         },
2026-06-20T03:13:21.0705894Z         "unit": {
2026-06-20T03:13:21.0706018Z           "complete": true,
2026-06-20T03:13:21.0706126Z           "evidence": [
2026-06-20T03:13:21.0706230Z             {
2026-06-20T03:13:21.0706379Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-20T03:13:21.0706497Z               "line": 246
2026-06-20T03:13:21.0706607Z             },
2026-06-20T03:13:21.0706703Z             {
2026-06-20T03:13:21.0706850Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-20T03:13:21.0706956Z               "line": 306
2026-06-20T03:13:21.0707060Z             },
2026-06-20T03:13:21.0707164Z             {
2026-06-20T03:13:21.0707309Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-20T03:13:21.0707423Z               "line": 363
2026-06-20T03:13:21.0707523Z             },
2026-06-20T03:13:21.0707629Z             {
2026-06-20T03:13:21.0707775Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-20T03:13:21.0707881Z               "line": 286
2026-06-20T03:13:21.0707986Z             },
2026-06-20T03:13:21.0708085Z             {
2026-06-20T03:13:21.0708229Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-20T03:13:21.0708334Z               "line": 338
2026-06-20T03:13:21.0708437Z             },
2026-06-20T03:13:21.0708542Z             {
2026-06-20T03:13:21.0708697Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.0708811Z               "line": 783
2026-06-20T03:13:21.0708907Z             },
2026-06-20T03:13:21.0709092Z             {
2026-06-20T03:13:21.0709218Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0709341Z               "line": 8751
2026-06-20T03:13:21.0709450Z             },
2026-06-20T03:13:21.0709552Z             {
2026-06-20T03:13:21.0709674Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0709774Z               "line": 8904
2026-06-20T03:13:21.0709876Z             },
2026-06-20T03:13:21.0709975Z             {
2026-06-20T03:13:21.0710108Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0710209Z               "line": 9493
2026-06-20T03:13:21.0710314Z             },
2026-06-20T03:13:21.0710418Z             {
2026-06-20T03:13:21.0710538Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0710652Z               "line": 9609
2026-06-20T03:13:21.0710753Z             }
2026-06-20T03:13:21.0710867Z           ]
2026-06-20T03:13:21.0710971Z         }
2026-06-20T03:13:21.0711078Z       }
2026-06-20T03:13:21.0711178Z     },
2026-06-20T03:13:21.0711271Z     {
2026-06-20T03:13:21.0711390Z       "id": "REQ-EP-6",
2026-06-20T03:13:21.0712916Z       "title": "Gateway type acceptance: a Gateway-typed perch binds (api bind --type, open type system — un-hardcode the live_agent default), advertises/addressable like any endpoint, owns shells (owner validation not agent-family-gated), subscribes to digests, and is the user-msg identity gate's user-backed origin (REQ-MSG-5); in-tree mock-gateway fixture (R-DOCS-2 pattern, no downstream adapter code). Cross-node WAN Gateway-origin (registry endpoint_type trust) tracked by REQ-MSG-6",
2026-06-20T03:13:21.0713027Z       "requiredStages": [
2026-06-20T03:13:21.0713135Z         "doc",
2026-06-20T03:13:21.0713235Z         "impl",
2026-06-20T03:13:21.0713468Z         "unit"
2026-06-20T03:13:21.0713568Z       ],
2026-06-20T03:13:21.0713772Z       "stages": {
2026-06-20T03:13:21.0713880Z         "doc": {
2026-06-20T03:13:21.0713990Z           "complete": true,
2026-06-20T03:13:21.0714101Z           "evidence": [
2026-06-20T03:13:21.0714200Z             {
2026-06-20T03:13:21.0714324Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.0714434Z               "line": 227
2026-06-20T03:13:21.0714538Z             }
2026-06-20T03:13:21.0714649Z           ]
2026-06-20T03:13:21.0714744Z         },
2026-06-20T03:13:21.0714853Z         "impl": {
2026-06-20T03:13:21.0714959Z           "complete": true,
2026-06-20T03:13:21.0715068Z           "evidence": [
2026-06-20T03:13:21.0715168Z             {
2026-06-20T03:13:21.0715321Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.0715435Z               "line": 212
2026-06-20T03:13:21.0715530Z             }
2026-06-20T03:13:21.0715631Z           ]
2026-06-20T03:13:21.0715730Z         },
2026-06-20T03:13:21.0715840Z         "int": {
2026-06-20T03:13:21.0715955Z           "complete": true,
2026-06-20T03:13:21.0716074Z           "evidence": [
2026-06-20T03:13:21.0716180Z             {
2026-06-20T03:13:21.0716350Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-20T03:13:21.0716478Z               "line": 18
2026-06-20T03:13:21.0716588Z             }
2026-06-20T03:13:21.0716695Z           ]
2026-06-20T03:13:21.0716790Z         },
2026-06-20T03:13:21.0716900Z         "unit": {
2026-06-20T03:13:21.0717020Z           "complete": true,
2026-06-20T03:13:21.0717134Z           "evidence": [
2026-06-20T03:13:21.0717240Z             {
2026-06-20T03:13:21.0717401Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T03:13:21.0717526Z               "line": 556
2026-06-20T03:13:21.0717625Z             },
2026-06-20T03:13:21.0717729Z             {
2026-06-20T03:13:21.0717869Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.0717997Z               "line": 904
2026-06-20T03:13:21.0718107Z             }
2026-06-20T03:13:21.0718198Z           ]
2026-06-20T03:13:21.0718306Z         }
2026-06-20T03:13:21.0718407Z       }
2026-06-20T03:13:21.0718508Z     },
2026-06-20T03:13:21.0718612Z     {
2026-06-20T03:13:21.0718727Z       "id": "REQ-EP-7",
2026-06-20T03:13:21.0720540Z       "title": "Durable live-role.md: a per-agent broad-purpose statement in tracked/agents/<id>/ beside live-context.md (replicates with the mind on the same a-<id> branch); renders FIRST at start-transition context injection (role -> live-context -> project-context); SOLE writer `spt endpoint role --overwrite <file>` — mechanical no-automated-writer guarantee (echo-commune ingest / signoff / Psyche reconcile structurally exclude it). The user-backed-origin hard gate on the writer is a deferred later tightening (rides the user-msg identity plumbing)",
2026-06-20T03:13:21.0720668Z       "requiredStages": [
2026-06-20T03:13:21.0720770Z         "doc",
2026-06-20T03:13:21.0720893Z         "impl",
2026-06-20T03:13:21.0720993Z         "unit"
2026-06-20T03:13:21.0721099Z       ],
2026-06-20T03:13:21.0721208Z       "stages": {
2026-06-20T03:13:21.0721313Z         "doc": {
2026-06-20T03:13:21.0721432Z           "complete": true,
2026-06-20T03:13:21.0721546Z           "evidence": [
2026-06-20T03:13:21.0721643Z             {
2026-06-20T03:13:21.0721761Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.0721874Z               "line": 490
2026-06-20T03:13:21.0721974Z             }
2026-06-20T03:13:21.0722080Z           ]
2026-06-20T03:13:21.0722188Z         },
2026-06-20T03:13:21.0722299Z         "impl": {
2026-06-20T03:13:21.0722418Z           "complete": true,
2026-06-20T03:13:21.0722532Z           "evidence": [
2026-06-20T03:13:21.0722633Z             {
2026-06-20T03:13:21.0722776Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T03:13:21.0722889Z               "line": 505
2026-06-20T03:13:21.0722986Z             },
2026-06-20T03:13:21.0723085Z             {
2026-06-20T03:13:21.0723343Z               "path": "crates/spt-live/src/resume.rs",
2026-06-20T03:13:21.0723457Z               "line": 87
2026-06-20T03:13:21.0723649Z             },
2026-06-20T03:13:21.0723752Z             {
2026-06-20T03:13:21.0723931Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T03:13:21.0724034Z               "line": 81
2026-06-20T03:13:21.0724133Z             },
2026-06-20T03:13:21.0724228Z             {
2026-06-20T03:13:21.0724383Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T03:13:21.0724502Z               "line": 166
2026-06-20T03:13:21.0724599Z             },
2026-06-20T03:13:21.0724698Z             {
2026-06-20T03:13:21.0724832Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0724932Z               "line": 1645
2026-06-20T03:13:21.0725041Z             }
2026-06-20T03:13:21.0725141Z           ]
2026-06-20T03:13:21.0725242Z         },
2026-06-20T03:13:21.0725347Z         "int": {
2026-06-20T03:13:21.0725461Z           "complete": false,
2026-06-20T03:13:21.0725590Z           "evidence": []
2026-06-20T03:13:21.0725690Z         },
2026-06-20T03:13:21.0725800Z         "unit": {
2026-06-20T03:13:21.0725919Z           "complete": true,
2026-06-20T03:13:21.0726033Z           "evidence": [
2026-06-20T03:13:21.0726134Z             {
2026-06-20T03:13:21.0726286Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T03:13:21.0726405Z               "line": 623
2026-06-20T03:13:21.0726512Z             },
2026-06-20T03:13:21.0726619Z             {
2026-06-20T03:13:21.0726755Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-20T03:13:21.0726868Z               "line": 212
2026-06-20T03:13:21.0726962Z             },
2026-06-20T03:13:21.0727072Z             {
2026-06-20T03:13:21.0727218Z               "path": "crates/spt-live/src/resume.rs",
2026-06-20T03:13:21.0727331Z               "line": 307
2026-06-20T03:13:21.0727437Z             },
2026-06-20T03:13:21.0727542Z             {
2026-06-20T03:13:21.0727689Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0727800Z               "line": 7724
2026-06-20T03:13:21.0727918Z             },
2026-06-20T03:13:21.0728023Z             {
2026-06-20T03:13:21.0728157Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0728271Z               "line": 7751
2026-06-20T03:13:21.0728371Z             }
2026-06-20T03:13:21.0728476Z           ]
2026-06-20T03:13:21.0728576Z         }
2026-06-20T03:13:21.0728672Z       }
2026-06-20T03:13:21.0728777Z     },
2026-06-20T03:13:21.0728876Z     {
2026-06-20T03:13:21.0729078Z       "id": "REQ-FRONT-1",
2026-06-20T03:13:21.0729287Z       "title": "Day-one launcher/manager frontend (list/launch/attach/init)",
2026-06-20T03:13:21.0729407Z       "requiredStages": [],
2026-06-20T03:13:21.0729511Z       "stages": {
2026-06-20T03:13:21.0729619Z         "doc": {
2026-06-20T03:13:21.0729738Z           "complete": false,
2026-06-20T03:13:21.0729842Z           "evidence": []
2026-06-20T03:13:21.0729951Z         },
2026-06-20T03:13:21.0730057Z         "impl": {
2026-06-20T03:13:21.0730171Z           "complete": false,
2026-06-20T03:13:21.0730275Z           "evidence": []
2026-06-20T03:13:21.0730381Z         },
2026-06-20T03:13:21.0730490Z         "int": {
2026-06-20T03:13:21.0730595Z           "complete": false,
2026-06-20T03:13:21.0730714Z           "evidence": []
2026-06-20T03:13:21.0730814Z         },
2026-06-20T03:13:21.0730924Z         "unit": {
2026-06-20T03:13:21.0731034Z           "complete": false,
2026-06-20T03:13:21.0731143Z           "evidence": []
2026-06-20T03:13:21.0731243Z         }
2026-06-20T03:13:21.0731344Z       }
2026-06-20T03:13:21.0731444Z     },
2026-06-20T03:13:21.0731544Z     {
2026-06-20T03:13:21.0731673Z       "id": "REQ-HAZARD-ATTACH-WEDGE",
2026-06-20T03:13:21.0737024Z       "title": "A legitimately dead PTY child (real crash/kill) + an undrained operator pump must NOT wedge the broker for all other clients. ROOT (v0.12.0 real-harness defect): loopback attach output is a blocking write_all into a bounded 64KB tokio duplex (nethost.rs:1040,1090); when the operator's rc pump stops draining (tab closed) the buffer fills and write_all blocks forever (the 'loopback never hangs' assumption at nethost.rs:1103 is false), parking a worker in the 2-worker net runtime (nethost.rs:640); a couple of these saturate BOTH workers → every new attach / `endpoint run` stalls right after 'PUMP_IPC_READER: spawned' → 30s FIRST_EVENT_GRACE → 'no output / dead or wedged'; `daemon stop` cannot join the stuck workers. DISTINCT from the removed B1 path-(c) mutex deadlock. DISPOSITION = PROVE-DON'T-CHANGE (doyle GATE-PASS @e883f45, 2026-06-18): this ROOT is the SUPERSEDED v0.12.0 hypothesis — the post-L0 code ALREADY prevents the wedge, so NO fail-fast / worker-count code was added. serve_attach forwards fire-and-forget (net_stream_send op_id=None) and the broker-side send_stream is already BROKER-QUIC-DEADLINE-bounded (bounded_block_on, 10s); the loopback duplex is drained broker-INTERNALLY by the operator row's own read pump (RecvHalf::Loopback, retentive_cap==0 → evict-not-park) so a dead rc (a dropped IPC subscriber) never backs peer_w up; bounded_block_on parks the BROKER DISPATCH thread, not a net worker → no worker-pool exhaustion (full mechanism in the required_stages comment). Folds the status=online sub-check: a dead spt-hosted endpoint is marked OFFLINE within one reconcile tick on abrupt child death (broker exit-waiter reaps the session → B2 sees it absent) — PROVEN, no change. (v0.12.1)",
2026-06-20T03:13:21.0737415Z       "requiredStages": [
2026-06-20T03:13:21.0737522Z         "int"
2026-06-20T03:13:21.0737622Z       ],
2026-06-20T03:13:21.0737732Z       "stages": {
2026-06-20T03:13:21.0737830Z         "doc": {
2026-06-20T03:13:21.0737954Z           "complete": false,
2026-06-20T03:13:21.0738064Z           "evidence": []
2026-06-20T03:13:21.0738164Z         },
2026-06-20T03:13:21.0738273Z         "impl": {
2026-06-20T03:13:21.0738393Z           "complete": false,
2026-06-20T03:13:21.0738502Z           "evidence": []
2026-06-20T03:13:21.0738632Z         },
2026-06-20T03:13:21.0738731Z         "int": {
2026-06-20T03:13:21.0738855Z           "complete": true,
2026-06-20T03:13:21.0739050Z           "evidence": [
2026-06-20T03:13:21.0739165Z             {
2026-06-20T03:13:21.0739328Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-20T03:13:21.0739442Z               "line": 300
2026-06-20T03:13:21.0739542Z             }
2026-06-20T03:13:21.0739643Z           ]
2026-06-20T03:13:21.0739746Z         },
2026-06-20T03:13:21.0739852Z         "unit": {
2026-06-20T03:13:21.0739967Z           "complete": false,
2026-06-20T03:13:21.0740075Z           "evidence": []
2026-06-20T03:13:21.0740184Z         }
2026-06-20T03:13:21.0740285Z       }
2026-06-20T03:13:21.0740387Z     },
2026-06-20T03:13:21.0740491Z     {
2026-06-20T03:13:21.0740626Z       "id": "REQ-HAZARD-BIND-CWD-UNSET",
2026-06-20T03:13:21.0743220Z       "title": "A bound endpoint's `info.cwd` is SET at bind so a freshly-created perch appears under its own project tab. ROOT (found, v0.13.0): `info.cwd` is NEVER set on bind — `cmd_bind` (spt-hosted) and `bind_from_seed` (harness-hosted) never thread cwd into `establish_perch`/`rec.cwd`. FIX: `cmd_bind` reads its own `current_dir` (the broker spawned it in `project_cwd`); `bind_from_seed` passes `seed.cwd` (already captured at seed time, currently DISCARDED). DISTINCT from REQ-PICKER-HISTORY-FRESH (v0.12.1) — that unioned cwd-origin into picker MEMBERSHIP but tested merge_origin_project with a PROVIDED origin; it never asserted `info.cwd` is actually set on bind, so a real `endpoint run` perch still had an empty cwd and the union had nothing to union. This is the v0.12.1 P1 'appears under its own project right away' claim that was REFUTED in the changelog — delivered for real here. (v0.13.0)",
2026-06-20T03:13:21.0743361Z       "requiredStages": [
2026-06-20T03:13:21.0743467Z         "impl",
2026-06-20T03:13:21.0743577Z         "unit",
2026-06-20T03:13:21.0743680Z         "int"
2026-06-20T03:13:21.0743787Z       ],
2026-06-20T03:13:21.0744034Z       "stages": {
2026-06-20T03:13:21.0744139Z         "doc": {
2026-06-20T03:13:21.0744378Z           "complete": false,
2026-06-20T03:13:21.0744483Z           "evidence": []
2026-06-20T03:13:21.0744592Z         },
2026-06-20T03:13:21.0744693Z         "impl": {
2026-06-20T03:13:21.0744816Z           "complete": true,
2026-06-20T03:13:21.0744926Z           "evidence": [
2026-06-20T03:13:21.0745032Z             {
2026-06-20T03:13:21.0745178Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.0745282Z               "line": 257
2026-06-20T03:13:21.0745387Z             }
2026-06-20T03:13:21.0745490Z           ]
2026-06-20T03:13:21.0745589Z         },
2026-06-20T03:13:21.0745690Z         "int": {
2026-06-20T03:13:21.0745801Z           "complete": true,
2026-06-20T03:13:21.0745904Z           "evidence": [
2026-06-20T03:13:21.0746005Z             {
2026-06-20T03:13:21.0746181Z               "path": "crates/spt/tests/bind_cwd_project_e2e.rs",
2026-06-20T03:13:21.0746296Z               "line": 93
2026-06-20T03:13:21.0746401Z             }
2026-06-20T03:13:21.0746505Z           ]
2026-06-20T03:13:21.0746611Z         },
2026-06-20T03:13:21.0746706Z         "unit": {
2026-06-20T03:13:21.0746820Z           "complete": true,
2026-06-20T03:13:21.0746935Z           "evidence": [
2026-06-20T03:13:21.0747040Z             {
2026-06-20T03:13:21.0747187Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.0747298Z               "line": 802
2026-06-20T03:13:21.0747402Z             },
2026-06-20T03:13:21.0747506Z             {
2026-06-20T03:13:21.0747636Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.0747749Z               "line": 824
2026-06-20T03:13:21.0747846Z             },
2026-06-20T03:13:21.0747956Z             {
2026-06-20T03:13:21.0748102Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.0748202Z               "line": 855
2026-06-20T03:13:21.0748311Z             }
2026-06-20T03:13:21.0748414Z           ]
2026-06-20T03:13:21.0748519Z         }
2026-06-20T03:13:21.0748620Z       }
2026-06-20T03:13:21.0748729Z     },
2026-06-20T03:13:21.0748833Z     {
2026-06-20T03:13:21.0749053Z       "id": "REQ-HAZARD-BRAIN-RESPAWN-PATH",
2026-06-20T03:13:21.0751539Z       "title": "The broker respawns the brain onto the APPLIED bytes, not the renamed old binary: the candidate-binary default is the canonical exe path captured ONCE at broker start, never a per-spawn std::env::current_exe() — on Linux current_exe (readlink /proc/self/exe) is inode-tracking and follows the `apply` rename (spt -> spt.old-N), so a resident broker would respawn the brain onto OLD bytes while recording `applied` (Windows GetModuleFileName is path-at-start, so Windows was green; ADR-0018 Q3 silently assumed path-string semantics). Backstop: promotion gates on bytes — a trial promotes only if brain.ready exe_hash == the staged artifact hash for this platform, else auto-rollback + loud notif (readiness != new-bytes was the false-success that recorded applied:8 over a v0.4.0 brain on kitsubito, 2026-06-11). KNOWN-HAZARDS 6.11.",
2026-06-20T03:13:21.0751686Z       "requiredStages": [
2026-06-20T03:13:21.0751821Z         "doc",
2026-06-20T03:13:21.0751925Z         "impl",
2026-06-20T03:13:21.0752030Z         "unit",
2026-06-20T03:13:21.0752131Z         "int"
2026-06-20T03:13:21.0752235Z       ],
2026-06-20T03:13:21.0752339Z       "stages": {
2026-06-20T03:13:21.0752450Z         "doc": {
2026-06-20T03:13:21.0752569Z           "complete": true,
2026-06-20T03:13:21.0752669Z           "evidence": [
2026-06-20T03:13:21.0752775Z             {
2026-06-20T03:13:21.0752907Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T03:13:21.0753018Z               "line": 333
2026-06-20T03:13:21.0753122Z             }
2026-06-20T03:13:21.0753222Z           ]
2026-06-20T03:13:21.0753324Z         },
2026-06-20T03:13:21.0753428Z         "impl": {
2026-06-20T03:13:21.0753541Z           "complete": true,
2026-06-20T03:13:21.0753650Z           "evidence": [
2026-06-20T03:13:21.0753855Z             {
2026-06-20T03:13:21.0754008Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0754198Z               "line": 494
2026-06-20T03:13:21.0754304Z             },
2026-06-20T03:13:21.0754413Z             {
2026-06-20T03:13:21.0754565Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0754676Z               "line": 499
2026-06-20T03:13:21.0754780Z             },
2026-06-20T03:13:21.0754880Z             {
2026-06-20T03:13:21.0755033Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0755142Z               "line": 874
2026-06-20T03:13:21.0755239Z             },
2026-06-20T03:13:21.0755343Z             {
2026-06-20T03:13:21.0755486Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0755602Z               "line": 915
2026-06-20T03:13:21.0755700Z             },
2026-06-20T03:13:21.0755804Z             {
2026-06-20T03:13:21.0755957Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0756064Z               "line": 926
2026-06-20T03:13:21.0756169Z             },
2026-06-20T03:13:21.0756279Z             {
2026-06-20T03:13:21.0756436Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T03:13:21.0756551Z               "line": 358
2026-06-20T03:13:21.0756656Z             }
2026-06-20T03:13:21.0756765Z           ]
2026-06-20T03:13:21.0756861Z         },
2026-06-20T03:13:21.0756971Z         "int": {
2026-06-20T03:13:21.0757080Z           "complete": true,
2026-06-20T03:13:21.0757196Z           "evidence": [
2026-06-20T03:13:21.0757290Z             {
2026-06-20T03:13:21.0757457Z               "path": "crates/spt/tests/brain_respawn_rename.rs",
2026-06-20T03:13:21.0757572Z               "line": 30
2026-06-20T03:13:21.0757662Z             }
2026-06-20T03:13:21.0757761Z           ]
2026-06-20T03:13:21.0757863Z         },
2026-06-20T03:13:21.0757962Z         "unit": {
2026-06-20T03:13:21.0758067Z           "complete": true,
2026-06-20T03:13:21.0758192Z           "evidence": [
2026-06-20T03:13:21.0758300Z             {
2026-06-20T03:13:21.0758444Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0758573Z               "line": 1493
2026-06-20T03:13:21.0758676Z             },
2026-06-20T03:13:21.0758776Z             {
2026-06-20T03:13:21.0758927Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0759123Z               "line": 1518
2026-06-20T03:13:21.0759237Z             },
2026-06-20T03:13:21.0759346Z             {
2026-06-20T03:13:21.0759500Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0759604Z               "line": 1535
2026-06-20T03:13:21.0759713Z             },
2026-06-20T03:13:21.0759814Z             {
2026-06-20T03:13:21.0759961Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0760082Z               "line": 1578
2026-06-20T03:13:21.0760181Z             }
2026-06-20T03:13:21.0760285Z           ]
2026-06-20T03:13:21.0760387Z         }
2026-06-20T03:13:21.0760500Z       }
2026-06-20T03:13:21.0760596Z     },
2026-06-20T03:13:21.0760707Z     {
2026-06-20T03:13:21.0760876Z       "id": "REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE",
2026-06-20T03:13:21.0763477Z       "title": "B4 (deepest): a bare brain restart (broker survives) REHYDRATES the live-agent lifecycle so post-restart endpoints are hosted + attachable. Today resume_sessions (brainproc.rs:186, brain.rs:797-809) re-subscribes to the broker's PTY sessions but ALL BrainLifecycle instances (lifecycle.rs:58-130; the ephemeral brain.rs:254-275) are LOST on restart → a post-restart live endpoint gets no livehost → its Psyche is never (re)hosted and new spawns die / can't attach until a FULL daemon reset (operator: perri's brain kill+restart wedged everything until a full daemon kill). FIX: on brain startup, rebuild a BrainLifecycle per resumed live-capable session — load the manifest from the adapter registry → instantiate → start the pulse — the rehydrate the resume no-op cannot do. Composes with B2 (the reconcile re-hosts from the honest on-disk status after rehydrate). (v0.12.0)",
2026-06-20T03:13:21.0763820Z       "requiredStages": [],
2026-06-20T03:13:21.0763931Z       "stages": {
2026-06-20T03:13:21.0764035Z         "doc": {
2026-06-20T03:13:21.0764158Z           "complete": false,
2026-06-20T03:13:21.0764258Z           "evidence": []
2026-06-20T03:13:21.0764355Z         },
2026-06-20T03:13:21.0764463Z         "impl": {
2026-06-20T03:13:21.0764578Z           "complete": false,
2026-06-20T03:13:21.0764697Z           "evidence": []
2026-06-20T03:13:21.0764797Z         },
2026-06-20T03:13:21.0764903Z         "int": {
2026-06-20T03:13:21.0765012Z           "complete": false,
2026-06-20T03:13:21.0765126Z           "evidence": []
2026-06-20T03:13:21.0765227Z         },
2026-06-20T03:13:21.0765331Z         "unit": {
2026-06-20T03:13:21.0765450Z           "complete": false,
2026-06-20T03:13:21.0765566Z           "evidence": []
2026-06-20T03:13:21.0765670Z         }
2026-06-20T03:13:21.0765804Z       }
2026-06-20T03:13:21.0765909Z     },
2026-06-20T03:13:21.0766013Z     {
2026-06-20T03:13:21.0766176Z       "id": "REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP",
2026-06-20T03:13:21.0769959Z       "title": "A bare brain restart leaves EXACTLY ONE `{id}-psyche` process per endpoint — no duplicate. On an abrupt brain death stop_host never runs (the LiveSet + owned child handles die with the brain) and Breap's job/group only reaps at DAEMON stop, so the PRIOR brain's Psyche stays ALIVE; the respawned brain's reconcile re-hosts a SECOND Psyche and overwrites the `{id}-psyche` perch pid, leaving the old one untracked + alive = a duplicate that lingers until daemon-stop (the operator's 'brain kill+restart wedged everything'). FIX: at brain start, BEFORE the first reconcile re-hosts, reap any pre-existing `{id}-psyche` orphan — ID-SPECIFICALLY (recycle-safe on the shared box, where sibling agents share the `claude` basename): scoped-kill the recorded pid ONLY IF it is alive AND its exe basename == the adapter's psyche program (normalize_basename) AND its COMMAND LINE contains the full psyche id `<id>-psyche` (baked via {id}); a sibling never carries THIS id, and any unreadable signal FAILS SAFE (decline to reap — a missed dup is bounded by Breap, a wrong-kill is catastrophic). CAVEAT: the cmdline carries `<id>-psyche` only when the adapter's psyche_init.command uses {id} (the norm); a non-{id} adapter safely MISSES the reap (today's behavior, Breap bounds it) — never a wrong-kill. (v0.12.0)",
2026-06-20T03:13:21.0770131Z       "requiredStages": [
2026-06-20T03:13:21.0770235Z         "impl",
2026-06-20T03:13:21.0770337Z         "unit",
2026-06-20T03:13:21.0770441Z         "int"
2026-06-20T03:13:21.0770545Z       ],
2026-06-20T03:13:21.0773599Z       "stages": {
2026-06-20T03:13:21.0773737Z         "doc": {
2026-06-20T03:13:21.0773866Z           "complete": false,
2026-06-20T03:13:21.0773975Z           "evidence": []
2026-06-20T03:13:21.0774080Z         },
2026-06-20T03:13:21.0774186Z         "impl": {
2026-06-20T03:13:21.0774328Z           "complete": true,
2026-06-20T03:13:21.0774439Z           "evidence": [
2026-06-20T03:13:21.0774567Z             {
2026-06-20T03:13:21.0774732Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.0774848Z               "line": 570
2026-06-20T03:13:21.0774952Z             },
2026-06-20T03:13:21.0775052Z             {
2026-06-20T03:13:21.0775210Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.0775323Z               "line": 594
2026-06-20T03:13:21.0775430Z             },
2026-06-20T03:13:21.0775534Z             {
2026-06-20T03:13:21.0775676Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.0775792Z               "line": 620
2026-06-20T03:13:21.0775901Z             },
2026-06-20T03:13:21.0775991Z             {
2026-06-20T03:13:21.0776145Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.0776259Z               "line": 679
2026-06-20T03:13:21.0776359Z             },
2026-06-20T03:13:21.0776606Z             {
2026-06-20T03:13:21.0776751Z               "path": "crates/spt-store/src/proc.rs",
2026-06-20T03:13:21.0776953Z               "line": 89
2026-06-20T03:13:21.0777058Z             },
2026-06-20T03:13:21.0777162Z             {
2026-06-20T03:13:21.0777289Z               "path": "crates/spt-store/src/proc.rs",
2026-06-20T03:13:21.0777395Z               "line": 134
2026-06-20T03:13:21.0777500Z             }
2026-06-20T03:13:21.0777590Z           ]
2026-06-20T03:13:21.0777695Z         },
2026-06-20T03:13:21.0777796Z         "int": {
2026-06-20T03:13:21.0777909Z           "complete": true,
2026-06-20T03:13:21.0778020Z           "evidence": [
2026-06-20T03:13:21.0778120Z             {
2026-06-20T03:13:21.0778297Z               "path": "crates/spt/tests/brain_restart_psyche_dup_e2e.rs",
2026-06-20T03:13:21.0778410Z               "line": 20
2026-06-20T03:13:21.0778519Z             }
2026-06-20T03:13:21.0778616Z           ]
2026-06-20T03:13:21.0778711Z         },
2026-06-20T03:13:21.0778820Z         "unit": {
2026-06-20T03:13:21.0779035Z           "complete": true,
2026-06-20T03:13:21.0779154Z           "evidence": [
2026-06-20T03:13:21.0779260Z             {
2026-06-20T03:13:21.0779416Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.0779526Z               "line": 1047
2026-06-20T03:13:21.0779632Z             },
2026-06-20T03:13:21.0779726Z             {
2026-06-20T03:13:21.0779873Z               "path": "crates/spt-store/src/proc.rs",
2026-06-20T03:13:21.0779987Z               "line": 445
2026-06-20T03:13:21.0780085Z             }
2026-06-20T03:13:21.0780180Z           ]
2026-06-20T03:13:21.0780281Z         }
2026-06-20T03:13:21.0780386Z       }
2026-06-20T03:13:21.0780485Z     },
2026-06-20T03:13:21.0780587Z     {
2026-06-20T03:13:21.0780738Z       "id": "REQ-HAZARD-BROKER-PROCESS-ISOLATION",
2026-06-20T03:13:21.0783445Z       "title": "Broker and brain are separate processes: the broker runs as its own long-lived per-machine process that survives every brain restart, so a routine (brain-only) self-update restarts the brain onto the swapped binary while every hosted endpoint (PTY child, live QUIC conn, listening socket) stays untouched at the PROCESS level. The in-process-thread broker (daemon.rs:165-170) is a regression that silently unrealizes REQ-UPD-3 — apply degrades to an in-process Brain::handoff no-op and new code does not run until an unrelated restart (KNOWN-HAZARDS 6.7). Evidence must prove process-level survival (SPIKE-01/03 productionized as int: PTY child + live QUIC survive a brain-PROCESS restart onto a swapped binary), re-pointing the regression-masked in-process int tags currently on REQ-DAEMON-2 / REQ-UPD-3 (ADR-0018).",
2026-06-20T03:13:21.0783577Z       "requiredStages": [
2026-06-20T03:13:21.0783686Z         "doc",
2026-06-20T03:13:21.0783783Z         "impl",
2026-06-20T03:13:21.0783887Z         "unit",
2026-06-20T03:13:21.0783992Z         "int"
2026-06-20T03:13:21.0784094Z       ],
2026-06-20T03:13:21.0784202Z       "stages": {
2026-06-20T03:13:21.0784325Z         "doc": {
2026-06-20T03:13:21.0784446Z           "complete": true,
2026-06-20T03:13:21.0784574Z           "evidence": [
2026-06-20T03:13:21.0784680Z             {
2026-06-20T03:13:21.0784817Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T03:13:21.0784927Z               "line": 302
2026-06-20T03:13:21.0785028Z             }
2026-06-20T03:13:21.0785132Z           ]
2026-06-20T03:13:21.0785235Z         },
2026-06-20T03:13:21.0785330Z         "impl": {
2026-06-20T03:13:21.0785451Z           "complete": true,
2026-06-20T03:13:21.0785564Z           "evidence": [
2026-06-20T03:13:21.0785665Z             {
2026-06-20T03:13:21.0785818Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T03:13:21.0785931Z               "line": 108
2026-06-20T03:13:21.0786032Z             },
2026-06-20T03:13:21.0786133Z             {
2026-06-20T03:13:21.0786284Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T03:13:21.0786399Z               "line": 795
2026-06-20T03:13:21.0786634Z             },
2026-06-20T03:13:21.0786738Z             {
2026-06-20T03:13:21.0786880Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T03:13:21.0787071Z               "line": 995
2026-06-20T03:13:21.0787171Z             },
2026-06-20T03:13:21.0787278Z             {
2026-06-20T03:13:21.0787429Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0787533Z               "line": 23
2026-06-20T03:13:21.0787633Z             },
2026-06-20T03:13:21.0787722Z             {
2026-06-20T03:13:21.0787869Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0787980Z               "line": 113
2026-06-20T03:13:21.0788079Z             },
2026-06-20T03:13:21.0788188Z             {
2026-06-20T03:13:21.0788336Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0788441Z               "line": 158
2026-06-20T03:13:21.0788537Z             },
2026-06-20T03:13:21.0788647Z             {
2026-06-20T03:13:21.0788798Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0788900Z               "line": 218
2026-06-20T03:13:21.0789071Z             },
2026-06-20T03:13:21.0789161Z             {
2026-06-20T03:13:21.0789309Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0789413Z               "line": 261
2026-06-20T03:13:21.0789520Z             },
2026-06-20T03:13:21.0789610Z             {
2026-06-20T03:13:21.0789762Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0789877Z               "line": 275
2026-06-20T03:13:21.0789981Z             },
2026-06-20T03:13:21.0790082Z             {
2026-06-20T03:13:21.0790230Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0790333Z               "line": 320
2026-06-20T03:13:21.0790438Z             },
2026-06-20T03:13:21.0790543Z             {
2026-06-20T03:13:21.0790688Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0790803Z               "line": 347
2026-06-20T03:13:21.0790909Z             },
2026-06-20T03:13:21.0790998Z             {
2026-06-20T03:13:21.0791142Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0791252Z               "line": 359
2026-06-20T03:13:21.0791346Z             },
2026-06-20T03:13:21.0791452Z             {
2026-06-20T03:13:21.0791590Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0791695Z               "line": 373
2026-06-20T03:13:21.0791800Z             },
2026-06-20T03:13:21.0791905Z             {
2026-06-20T03:13:21.0792072Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0792186Z               "line": 400
2026-06-20T03:13:21.0792285Z             },
2026-06-20T03:13:21.0792387Z             {
2026-06-20T03:13:21.0792533Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0792644Z               "line": 643
2026-06-20T03:13:21.0792740Z             },
2026-06-20T03:13:21.0792843Z             {
2026-06-20T03:13:21.0792985Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0793091Z               "line": 989
2026-06-20T03:13:21.0793188Z             },
2026-06-20T03:13:21.0793293Z             {
2026-06-20T03:13:21.0793437Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.0793546Z               "line": 256
2026-06-20T03:13:21.0793641Z             },
2026-06-20T03:13:21.0793742Z             {
2026-06-20T03:13:21.0793884Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.0793985Z               "line": 1105
2026-06-20T03:13:21.0794095Z             },
2026-06-20T03:13:21.0794189Z             {
2026-06-20T03:13:21.0794348Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.0794452Z               "line": 1177
2026-06-20T03:13:21.0794552Z             },
2026-06-20T03:13:21.0794658Z             {
2026-06-20T03:13:21.0794805Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.0795025Z               "line": 1189
2026-06-20T03:13:21.0795129Z             },
2026-06-20T03:13:21.0795317Z             {
2026-06-20T03:13:21.0795458Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.0795565Z               "line": 1793
2026-06-20T03:13:21.0795669Z             },
2026-06-20T03:13:21.0795767Z             {
2026-06-20T03:13:21.0795910Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.0796021Z               "line": 188
2026-06-20T03:13:21.0796129Z             },
2026-06-20T03:13:21.0796235Z             {
2026-06-20T03:13:21.0796378Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.0796486Z               "line": 265
2026-06-20T03:13:21.0796584Z             },
2026-06-20T03:13:21.0796688Z             {
2026-06-20T03:13:21.0796826Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.0796940Z               "line": 276
2026-06-20T03:13:21.0797045Z             },
2026-06-20T03:13:21.0797150Z             {
2026-06-20T03:13:21.0797298Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.0797407Z               "line": 329
2026-06-20T03:13:21.0797504Z             },
2026-06-20T03:13:21.0797617Z             {
2026-06-20T03:13:21.0797765Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-20T03:13:21.0797876Z               "line": 56
2026-06-20T03:13:21.0797974Z             },
2026-06-20T03:13:21.0798074Z             {
2026-06-20T03:13:21.0798221Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-20T03:13:21.0798334Z               "line": 188
2026-06-20T03:13:21.0798443Z             },
2026-06-20T03:13:21.0798535Z             {
2026-06-20T03:13:21.0798677Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-20T03:13:21.0798787Z               "line": 82
2026-06-20T03:13:21.0798888Z             },
2026-06-20T03:13:21.0799048Z             {
2026-06-20T03:13:21.0799193Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.0799306Z               "line": 308
2026-06-20T03:13:21.0799407Z             },
2026-06-20T03:13:21.0799512Z             {
2026-06-20T03:13:21.0799655Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T03:13:21.0799770Z               "line": 424
2026-06-20T03:13:21.0799865Z             },
2026-06-20T03:13:21.0799970Z             {
2026-06-20T03:13:21.0800104Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.0800212Z               "line": 2006
2026-06-20T03:13:21.0800312Z             }
2026-06-20T03:13:21.0800410Z           ]
2026-06-20T03:13:21.0800513Z         },
2026-06-20T03:13:21.0800613Z         "int": {
2026-06-20T03:13:21.0800734Z           "complete": true,
2026-06-20T03:13:21.0800837Z           "evidence": [
2026-06-20T03:13:21.0800941Z             {
2026-06-20T03:13:21.0801084Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-20T03:13:21.0801201Z               "line": 57
2026-06-20T03:13:21.0801306Z             },
2026-06-20T03:13:21.0801407Z             {
2026-06-20T03:13:21.0801544Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-20T03:13:21.0801654Z               "line": 41
2026-06-20T03:13:21.0801755Z             }
2026-06-20T03:13:21.0801854Z           ]
2026-06-20T03:13:21.0801954Z         },
2026-06-20T03:13:21.0802060Z         "unit": {
2026-06-20T03:13:21.0802169Z           "complete": true,
2026-06-20T03:13:21.0802269Z           "evidence": [
2026-06-20T03:13:21.0802375Z             {
2026-06-20T03:13:21.0802522Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T03:13:21.0802633Z               "line": 532
2026-06-20T03:13:21.0802732Z             },
2026-06-20T03:13:21.0802837Z             {
2026-06-20T03:13:21.0802980Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T03:13:21.0803084Z               "line": 757
2026-06-20T03:13:21.0803189Z             },
2026-06-20T03:13:21.0803286Z             {
2026-06-20T03:13:21.0803432Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0803656Z               "line": 1067
2026-06-20T03:13:21.0803758Z             },
2026-06-20T03:13:21.0803954Z             {
2026-06-20T03:13:21.0804101Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0804211Z               "line": 1101
2026-06-20T03:13:21.0804307Z             },
2026-06-20T03:13:21.0804412Z             {
2026-06-20T03:13:21.0804555Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0804664Z               "line": 1143
2026-06-20T03:13:21.0804768Z             },
2026-06-20T03:13:21.0804870Z             {
2026-06-20T03:13:21.0805007Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0805122Z               "line": 1215
2026-06-20T03:13:21.0805223Z             },
2026-06-20T03:13:21.0805322Z             {
2026-06-20T03:13:21.0805470Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0805585Z               "line": 1228
2026-06-20T03:13:21.0805690Z             },
2026-06-20T03:13:21.0805790Z             {
2026-06-20T03:13:21.0805938Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0806061Z               "line": 1251
2026-06-20T03:13:21.0806163Z             },
2026-06-20T03:13:21.0806267Z             {
2026-06-20T03:13:21.0806408Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0806514Z               "line": 1277
2026-06-20T03:13:21.0806614Z             },
2026-06-20T03:13:21.0806713Z             {
2026-06-20T03:13:21.0806862Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0806961Z               "line": 1291
2026-06-20T03:13:21.0807066Z             },
2026-06-20T03:13:21.0807168Z             {
2026-06-20T03:13:21.0807309Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0807429Z               "line": 1315
2026-06-20T03:13:21.0807524Z             },
2026-06-20T03:13:21.0807628Z             {
2026-06-20T03:13:21.0807778Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0807886Z               "line": 1447
2026-06-20T03:13:21.0807996Z             },
2026-06-20T03:13:21.0808083Z             {
2026-06-20T03:13:21.0808229Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0808330Z               "line": 1623
2026-06-20T03:13:21.0808437Z             },
2026-06-20T03:13:21.0808534Z             {
2026-06-20T03:13:21.0808677Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0808782Z               "line": 1678
2026-06-20T03:13:21.0808885Z             },
2026-06-20T03:13:21.0809076Z             {
2026-06-20T03:13:21.0809218Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0809338Z               "line": 1724
2026-06-20T03:13:21.0809438Z             },
2026-06-20T03:13:21.0809528Z             {
2026-06-20T03:13:21.0809677Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0809786Z               "line": 1769
2026-06-20T03:13:21.0809881Z             },
2026-06-20T03:13:21.0809982Z             {
2026-06-20T03:13:21.0810134Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0810253Z               "line": 1813
2026-06-20T03:13:21.0810350Z             },
2026-06-20T03:13:21.0810454Z             {
2026-06-20T03:13:21.0810592Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0810706Z               "line": 1855
2026-06-20T03:13:21.0810801Z             },
2026-06-20T03:13:21.0810902Z             {
2026-06-20T03:13:21.0811054Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.0811164Z               "line": 2127
2026-06-20T03:13:21.0811270Z             },
2026-06-20T03:13:21.0811369Z             {
2026-06-20T03:13:21.0811515Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-20T03:13:21.0811621Z               "line": 217
2026-06-20T03:13:21.0811723Z             },
2026-06-20T03:13:21.0811933Z             {
2026-06-20T03:13:21.0812076Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-20T03:13:21.0812296Z               "line": 233
2026-06-20T03:13:21.0812400Z             },
2026-06-20T03:13:21.0812505Z             {
2026-06-20T03:13:21.0812653Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-20T03:13:21.0812762Z               "line": 254
2026-06-20T03:13:21.0812863Z             },
2026-06-20T03:13:21.0812958Z             {
2026-06-20T03:13:21.0813110Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-20T03:13:21.0813222Z               "line": 265
2026-06-20T03:13:21.0813325Z             },
2026-06-20T03:13:21.0813425Z             {
2026-06-20T03:13:21.0813569Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-20T03:13:21.0813678Z               "line": 278
2026-06-20T03:13:21.0813769Z             },
2026-06-20T03:13:21.0813875Z             {
2026-06-20T03:13:21.0814016Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-20T03:13:21.0814125Z               "line": 289
2026-06-20T03:13:21.0814220Z             },
2026-06-20T03:13:21.0814319Z             {
2026-06-20T03:13:21.0814462Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-20T03:13:21.0814572Z               "line": 301
2026-06-20T03:13:21.0814671Z             },
2026-06-20T03:13:21.0814771Z             {
2026-06-20T03:13:21.0814910Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-20T03:13:21.0815028Z               "line": 312
2026-06-20T03:13:21.0815130Z             },
2026-06-20T03:13:21.0815229Z             {
2026-06-20T03:13:21.0815372Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-20T03:13:21.0815487Z               "line": 323
2026-06-20T03:13:21.0815587Z             },
2026-06-20T03:13:21.0815687Z             {
2026-06-20T03:13:21.0815840Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-20T03:13:21.0815949Z               "line": 332
2026-06-20T03:13:21.0816060Z             },
2026-06-20T03:13:21.0816164Z             {
2026-06-20T03:13:21.0816311Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-20T03:13:21.0816422Z               "line": 342
2026-06-20T03:13:21.0816531Z             },
2026-06-20T03:13:21.0816636Z             {
2026-06-20T03:13:21.0816789Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-20T03:13:21.0816902Z               "line": 358
2026-06-20T03:13:21.0817002Z             },
2026-06-20T03:13:21.0817108Z             {
2026-06-20T03:13:21.0817249Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.0817360Z               "line": 758
2026-06-20T03:13:21.0817460Z             },
2026-06-20T03:13:21.0817559Z             {
2026-06-20T03:13:21.0817709Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.0817818Z               "line": 794
2026-06-20T03:13:21.0817922Z             },
2026-06-20T03:13:21.0818018Z             {
2026-06-20T03:13:21.0818166Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T03:13:21.0818275Z               "line": 966
2026-06-20T03:13:21.0818376Z             },
2026-06-20T03:13:21.0818486Z             {
2026-06-20T03:13:21.0818629Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-20T03:13:21.0818738Z               "line": 145
2026-06-20T03:13:21.0818842Z             },
2026-06-20T03:13:21.0819025Z             {
2026-06-20T03:13:21.0819176Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-20T03:13:21.0819285Z               "line": 224
2026-06-20T03:13:21.0819398Z             },
2026-06-20T03:13:21.0819507Z             {
2026-06-20T03:13:21.0819651Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-20T03:13:21.0819764Z               "line": 293
2026-06-20T03:13:21.0819859Z             },
2026-06-20T03:13:21.0819961Z             {
2026-06-20T03:13:21.0820098Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-20T03:13:21.0820213Z               "line": 17
2026-06-20T03:13:21.0820322Z             },
2026-06-20T03:13:21.0820590Z             {
2026-06-20T03:13:21.0820737Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-20T03:13:21.0820943Z               "line": 104
2026-06-20T03:13:21.0821047Z             }
2026-06-20T03:13:21.0821147Z           ]
2026-06-20T03:13:21.0821253Z         }
2026-06-20T03:13:21.0821352Z       }
2026-06-20T03:13:21.0821462Z     },
2026-06-20T03:13:21.0821563Z     {
2026-06-20T03:13:21.0821714Z       "id": "REQ-HAZARD-BROKER-QUIC-DEADLINE",
2026-06-20T03:13:21.0824762Z       "title": "The broker bounds every brain-waiting QUIC op (dial / open_stream / send_stream) so a black-holed or dead peer fails PROMPTLY with an ORDINARY error the broker REPLIES, never an unbounded await. The bound (< the brain's 30s PUMP_PEER_IO_TIMEOUT so the BROKER fires first) surfaces to the pump as a normal broker error reply → peer_outcome's non-TimedOut arm → drop conn + redial next tick, the round CONTINUES and the heartbeat keeps advancing — it must NEVER manifest as the brain's own read-deadline (the A-half poison → supervised-restart path REQ-HAZARD-PUMP-IPC-DEADLINE guards). Exactly-once is preserved: a timed-out journaled op fails INSIDE its apply_once closure so no phantom conn_id/stream_id is recorded and a fresh tick re-dials cleanly. The happy path is unchanged (a live peer completes with zero added latency; the bound only bites a non-responsive peer). This is the ROOT-cause cure for the 2.2h hfenduleam pump wedge — a dead roster peer whose QUIC path the broker awaited unbounded — recurring on hfenduleam 2026-06-16.",
2026-06-20T03:13:21.0824926Z       "requiredStages": [
2026-06-20T03:13:21.0825022Z         "doc",
2026-06-20T03:13:21.0825123Z         "impl",
2026-06-20T03:13:21.0825231Z         "unit",
2026-06-20T03:13:21.0825336Z         "int"
2026-06-20T03:13:21.0825447Z       ],
2026-06-20T03:13:21.0825551Z       "stages": {
2026-06-20T03:13:21.0825656Z         "doc": {
2026-06-20T03:13:21.0825771Z           "complete": true,
2026-06-20T03:13:21.0825889Z           "evidence": [
2026-06-20T03:13:21.0826020Z             {
2026-06-20T03:13:21.0826162Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T03:13:21.0826300Z               "line": 388
2026-06-20T03:13:21.0826405Z             }
2026-06-20T03:13:21.0826509Z           ]
2026-06-20T03:13:21.0826606Z         },
2026-06-20T03:13:21.0826715Z         "impl": {
2026-06-20T03:13:21.0826824Z           "complete": true,
2026-06-20T03:13:21.0826935Z           "evidence": [
2026-06-20T03:13:21.0827039Z             {
2026-06-20T03:13:21.0827191Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T03:13:21.0827298Z               "line": 773
2026-06-20T03:13:21.0827401Z             },
2026-06-20T03:13:21.0827509Z             {
2026-06-20T03:13:21.0827649Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T03:13:21.0827768Z               "line": 796
2026-06-20T03:13:21.0827877Z             }
2026-06-20T03:13:21.0827978Z           ]
2026-06-20T03:13:21.0828082Z         },
2026-06-20T03:13:21.0828187Z         "int": {
2026-06-20T03:13:21.0828302Z           "complete": true,
2026-06-20T03:13:21.0828402Z           "evidence": [
2026-06-20T03:13:21.0828507Z             {
2026-06-20T03:13:21.0828683Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-20T03:13:21.0828783Z               "line": 228
2026-06-20T03:13:21.0828894Z             },
2026-06-20T03:13:21.0829060Z             {
2026-06-20T03:13:21.0829204Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-20T03:13:21.0829312Z               "line": 468
2026-06-20T03:13:21.0829426Z             }
2026-06-20T03:13:21.0829538Z           ]
2026-06-20T03:13:21.0829641Z         },
2026-06-20T03:13:21.0829740Z         "unit": {
2026-06-20T03:13:21.0829846Z           "complete": true,
2026-06-20T03:13:21.0829954Z           "evidence": [
2026-06-20T03:13:21.0830048Z             {
2026-06-20T03:13:21.0830191Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T03:13:21.0830311Z               "line": 1495
2026-06-20T03:13:21.0830616Z             }
2026-06-20T03:13:21.0830720Z           ]
2026-06-20T03:13:21.0830816Z         }
2026-06-20T03:13:21.0831001Z       }
2026-06-20T03:13:21.0831103Z     },
2026-06-20T03:13:21.0831212Z     {
2026-06-20T03:13:21.0831359Z       "id": "REQ-HAZARD-BROKER-SEED-WIRE-SKEW",
2026-06-20T03:13:21.0834972Z       "title": "A daemon-state wire-format change (e.g. the v0.9.0 adapter-agnostic Seed) does NOT take effect until a DELIBERATE full broker restart: the broker serves the seed-control channel and is RESIDENT across a brain-only self-update (ADR-0004 no-terminate-during-update forbids auto-killing it), so a NEW-version CLI talking to a still-resident OLD broker fails the seed handshake — the old broker cannot deserialize the new Seed (its formerly-required `adapter` field is gone) and drops the conn without an ack, which surfaces to the CLI as a raw UnexpectedEof 'failed to fill whole buffer'. spt-core must (a) surface an ACTIONABLE diagnostic on that seed-ack EOF (name the stale-broker cause + the `spt daemon stop` fix — the broker restarts on the next api call), never the cryptic io error; and (b) document the operational rule (a deliberate broker restart is required on any daemon-state wire change — NOT automatic) + the FORWARD discipline (daemon-state/Seed schema changes stay additive + serde-default so a resident OLD broker tolerates a NEW CLI across a brain-only update; note this would NOT have rescued 0.9.0 itself, since the old broker's `adapter` was a required field). perri PREP-4 FINDING 1 (v0.9.0 CLI vs stale 0.8.x broker).",
2026-06-20T03:13:21.0835151Z       "requiredStages": [
2026-06-20T03:13:21.0835256Z         "doc",
2026-06-20T03:13:21.0835360Z         "impl",
2026-06-20T03:13:21.0835468Z         "unit"
2026-06-20T03:13:21.0835573Z       ],
2026-06-20T03:13:21.0835678Z       "stages": {
2026-06-20T03:13:21.0835782Z         "doc": {
2026-06-20T03:13:21.0835892Z           "complete": true,
2026-06-20T03:13:21.0836011Z           "evidence": [
2026-06-20T03:13:21.0836144Z             {
2026-06-20T03:13:21.0836289Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T03:13:21.0836430Z               "line": 395
2026-06-20T03:13:21.0836522Z             }
2026-06-20T03:13:21.0836627Z           ]
2026-06-20T03:13:21.0836722Z         },
2026-06-20T03:13:21.0836836Z         "impl": {
2026-06-20T03:13:21.0836942Z           "complete": true,
2026-06-20T03:13:21.0837060Z           "evidence": [
2026-06-20T03:13:21.0837161Z             {
2026-06-20T03:13:21.0837298Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.0837408Z               "line": 75
2026-06-20T03:13:21.0837524Z             }
2026-06-20T03:13:21.0837636Z           ]
2026-06-20T03:13:21.0837737Z         },
2026-06-20T03:13:21.0837839Z         "int": {
2026-06-20T03:13:21.0837961Z           "complete": false,
2026-06-20T03:13:21.0838070Z           "evidence": []
2026-06-20T03:13:21.0838171Z         },
2026-06-20T03:13:21.0838271Z         "unit": {
2026-06-20T03:13:21.0838389Z           "complete": true,
2026-06-20T03:13:21.0838519Z           "evidence": [
2026-06-20T03:13:21.0838623Z             {
2026-06-20T03:13:21.0838771Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.0838876Z               "line": 632
2026-06-20T03:13:21.0839062Z             }
2026-06-20T03:13:21.0839163Z           ]
2026-06-20T03:13:21.0839262Z         }
2026-06-20T03:13:21.0839362Z       }
2026-06-20T03:13:21.0839464Z     },
2026-06-20T03:13:21.0839567Z     {
2026-06-20T03:13:21.0839706Z       "id": "REQ-HAZARD-CASCADE-WIPE-GUARD",
2026-06-20T03:13:21.0839920Z       "title": "No hard-delete of a parent hosting non-empty children (6.3)",
2026-06-20T03:13:21.0840020Z       "requiredStages": [
2026-06-20T03:13:21.0840126Z         "impl",
2026-06-20T03:13:21.0840235Z         "unit"
2026-06-20T03:13:21.0840338Z       ],
2026-06-20T03:13:21.0840443Z       "stages": {
2026-06-20T03:13:21.0840551Z         "doc": {
2026-06-20T03:13:21.0840670Z           "complete": false,
2026-06-20T03:13:21.0840776Z           "evidence": []
2026-06-20T03:13:21.0840999Z         },
2026-06-20T03:13:21.0841100Z         "impl": {
2026-06-20T03:13:21.0841304Z           "complete": true,
2026-06-20T03:13:21.0841420Z           "evidence": [
2026-06-20T03:13:21.0841514Z             {
2026-06-20T03:13:21.0841668Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.0841777Z               "line": 172
2026-06-20T03:13:21.0841881Z             },
2026-06-20T03:13:21.0841987Z             {
2026-06-20T03:13:21.0842125Z               "path": "crates/spt/src/api/worker.rs",
2026-06-20T03:13:21.0842234Z               "line": 18
2026-06-20T03:13:21.0842340Z             },
2026-06-20T03:13:21.0842444Z             {
2026-06-20T03:13:21.0842573Z               "path": "crates/spt/src/api/worker.rs",
2026-06-20T03:13:21.0842683Z               "line": 100
2026-06-20T03:13:21.0842782Z             }
2026-06-20T03:13:21.0842878Z           ]
2026-06-20T03:13:21.0842984Z         },
2026-06-20T03:13:21.0843078Z         "int": {
2026-06-20T03:13:21.0843206Z           "complete": false,
2026-06-20T03:13:21.0843316Z           "evidence": []
2026-06-20T03:13:21.0843428Z         },
2026-06-20T03:13:21.0843532Z         "unit": {
2026-06-20T03:13:21.0843653Z           "complete": true,
2026-06-20T03:13:21.0843767Z           "evidence": [
2026-06-20T03:13:21.0843857Z             {
2026-06-20T03:13:21.0844010Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.0844114Z               "line": 857
2026-06-20T03:13:21.0844215Z             },
2026-06-20T03:13:21.0844310Z             {
2026-06-20T03:13:21.0844452Z               "path": "crates/spt/src/api/worker.rs",
2026-06-20T03:13:21.0844568Z               "line": 161
2026-06-20T03:13:21.0844668Z             },
2026-06-20T03:13:21.0844772Z             {
2026-06-20T03:13:21.0844902Z               "path": "crates/spt/src/api/worker.rs",
2026-06-20T03:13:21.0845020Z               "line": 233
2026-06-20T03:13:21.0845116Z             }
2026-06-20T03:13:21.0845226Z           ]
2026-06-20T03:13:21.0845335Z         }
2026-06-20T03:13:21.0845425Z       }
2026-06-20T03:13:21.0845532Z     },
2026-06-20T03:13:21.0845626Z     {
2026-06-20T03:13:21.0845763Z       "id": "REQ-HAZARD-CHILD-CONSOLE-FLASH",
2026-06-20T03:13:21.0846224Z       "title": "Console-subsystem children of the console-less daemon spawn with CREATE_NO_WINDOW, or each spawn flashes a visible blank window on the user's desktop (5.8)",
2026-06-20T03:13:21.0846347Z       "requiredStages": [
2026-06-20T03:13:21.0846457Z         "impl",
2026-06-20T03:13:21.0846562Z         "unit"
2026-06-20T03:13:21.0846657Z       ],
2026-06-20T03:13:21.0846757Z       "stages": {
2026-06-20T03:13:21.0846863Z         "doc": {
2026-06-20T03:13:21.0846981Z           "complete": true,
2026-06-20T03:13:21.0847106Z           "evidence": [
2026-06-20T03:13:21.0847211Z             {
2026-06-20T03:13:21.0847348Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T03:13:21.0847464Z               "line": 220
2026-06-20T03:13:21.0847553Z             }
2026-06-20T03:13:21.0847663Z           ]
2026-06-20T03:13:21.0847760Z         },
2026-06-20T03:13:21.0847868Z         "impl": {
2026-06-20T03:13:21.0847978Z           "complete": true,
2026-06-20T03:13:21.0848089Z           "evidence": [
2026-06-20T03:13:21.0848197Z             {
2026-06-20T03:13:21.0848346Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T03:13:21.0848452Z               "line": 316
2026-06-20T03:13:21.0848559Z             },
2026-06-20T03:13:21.0848663Z             {
2026-06-20T03:13:21.0848818Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.0848921Z               "line": 356
2026-06-20T03:13:21.0849108Z             },
2026-06-20T03:13:21.0849212Z             {
2026-06-20T03:13:21.0849366Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.0849485Z               "line": 578
2026-06-20T03:13:21.0849584Z             },
2026-06-20T03:13:21.0849690Z             {
2026-06-20T03:13:21.0849832Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-20T03:13:21.0850052Z               "line": 77
2026-06-20T03:13:21.0850252Z             }
2026-06-20T03:13:21.0850353Z           ]
2026-06-20T03:13:21.0850456Z         },
2026-06-20T03:13:21.0850552Z         "int": {
2026-06-20T03:13:21.0850668Z           "complete": false,
2026-06-20T03:13:21.0850780Z           "evidence": []
2026-06-20T03:13:21.0850884Z         },
2026-06-20T03:13:21.0850990Z         "unit": {
2026-06-20T03:13:21.0851111Z           "complete": true,
2026-06-20T03:13:21.0851225Z           "evidence": [
2026-06-20T03:13:21.0851322Z             {
2026-06-20T03:13:21.0851469Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.0851569Z               "line": 747
2026-06-20T03:13:21.0851675Z             },
2026-06-20T03:13:21.0851769Z             {
2026-06-20T03:13:21.0851923Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.0852027Z               "line": 785
2026-06-20T03:13:21.0852131Z             },
2026-06-20T03:13:21.0852238Z             {
2026-06-20T03:13:21.0852385Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-20T03:13:21.0852499Z               "line": 166
2026-06-20T03:13:21.0852595Z             }
2026-06-20T03:13:21.0852704Z           ]
2026-06-20T03:13:21.0852808Z         }
2026-06-20T03:13:21.0852910Z       }
2026-06-20T03:13:21.0853018Z     },
2026-06-20T03:13:21.0853114Z     {
2026-06-20T03:13:21.0853267Z       "id": "REQ-HAZARD-CONFLICT-BOTH-PRESERVED",
2026-06-20T03:13:21.0853847Z       "title": "A surfaced concurrent context pair is durably preserved (both versions, tracked artifacts) until a strictly dominating write clears it; no reconcile failure path discards an unmerged version (6.6, ADR-0013)",
2026-06-20T03:13:21.0853964Z       "requiredStages": [
2026-06-20T03:13:21.0854059Z         "impl",
2026-06-20T03:13:21.0854150Z         "unit"
2026-06-20T03:13:21.0854256Z       ],
2026-06-20T03:13:21.0854374Z       "stages": {
2026-06-20T03:13:21.0854475Z         "doc": {
2026-06-20T03:13:21.0854594Z           "complete": false,
2026-06-20T03:13:21.0854708Z           "evidence": []
2026-06-20T03:13:21.0854828Z         },
2026-06-20T03:13:21.0854923Z         "impl": {
2026-06-20T03:13:21.0855046Z           "complete": true,
2026-06-20T03:13:21.0855161Z           "evidence": [
2026-06-20T03:13:21.0855261Z             {
2026-06-20T03:13:21.0855424Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-20T03:13:21.0855562Z               "line": 22
2026-06-20T03:13:21.0855671Z             },
2026-06-20T03:13:21.0855768Z             {
2026-06-20T03:13:21.0855914Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T03:13:21.0856015Z               "line": 487
2026-06-20T03:13:21.0856106Z             },
2026-06-20T03:13:21.0856214Z             {
2026-06-20T03:13:21.0856371Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-20T03:13:21.0856480Z               "line": 17
2026-06-20T03:13:21.0856583Z             },
2026-06-20T03:13:21.0856688Z             {
2026-06-20T03:13:21.0856837Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-20T03:13:21.0856950Z               "line": 147
2026-06-20T03:13:21.0857047Z             },
2026-06-20T03:13:21.0857151Z             {
2026-06-20T03:13:21.0857313Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T03:13:21.0857423Z               "line": 226
2026-06-20T03:13:21.0857528Z             },
2026-06-20T03:13:21.0857628Z             {
2026-06-20T03:13:21.0857790Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T03:13:21.0857894Z               "line": 251
2026-06-20T03:13:21.0857996Z             },
2026-06-20T03:13:21.0858105Z             {
2026-06-20T03:13:21.0858257Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T03:13:21.0858368Z               "line": 277
2026-06-20T03:13:21.0858466Z             },
2026-06-20T03:13:21.0858572Z             {
2026-06-20T03:13:21.0858725Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-20T03:13:21.0858916Z               "line": 124
2026-06-20T03:13:21.0859096Z             },
2026-06-20T03:13:21.0859295Z             {
2026-06-20T03:13:21.0859453Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-20T03:13:21.0859557Z               "line": 224
2026-06-20T03:13:21.0859664Z             }
2026-06-20T03:13:21.0859758Z           ]
2026-06-20T03:13:21.0859853Z         },
2026-06-20T03:13:21.0859954Z         "int": {
2026-06-20T03:13:21.0862902Z           "complete": false,
2026-06-20T03:13:21.0863054Z           "evidence": []
2026-06-20T03:13:21.0863155Z         },
2026-06-20T03:13:21.0863265Z         "unit": {
2026-06-20T03:13:21.0863383Z           "complete": true,
2026-06-20T03:13:21.0863490Z           "evidence": [
2026-06-20T03:13:21.0863593Z             {
2026-06-20T03:13:21.0863761Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-20T03:13:21.0863874Z               "line": 63
2026-06-20T03:13:21.0863979Z             },
2026-06-20T03:13:21.0864100Z             {
2026-06-20T03:13:21.0864260Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-20T03:13:21.0864370Z               "line": 73
2026-06-20T03:13:21.0864483Z             },
2026-06-20T03:13:21.0864586Z             {
2026-06-20T03:13:21.0864739Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-20T03:13:21.0864835Z               "line": 85
2026-06-20T03:13:21.0864929Z             },
2026-06-20T03:13:21.0865035Z             {
2026-06-20T03:13:21.0865183Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-20T03:13:21.0865296Z               "line": 346
2026-06-20T03:13:21.0865398Z             },
2026-06-20T03:13:21.0865498Z             {
2026-06-20T03:13:21.0865650Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-20T03:13:21.0865759Z               "line": 281
2026-06-20T03:13:21.0865859Z             },
2026-06-20T03:13:21.0865960Z             {
2026-06-20T03:13:21.0866112Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-20T03:13:21.0866227Z               "line": 322
2026-06-20T03:13:21.0866333Z             },
2026-06-20T03:13:21.0866436Z             {
2026-06-20T03:13:21.0866570Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-20T03:13:21.0866681Z               "line": 360
2026-06-20T03:13:21.0866784Z             },
2026-06-20T03:13:21.0866893Z             {
2026-06-20T03:13:21.0867040Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T03:13:21.0867149Z               "line": 688
2026-06-20T03:13:21.0867258Z             },
2026-06-20T03:13:21.0867359Z             {
2026-06-20T03:13:21.0867506Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-20T03:13:21.0867621Z               "line": 397
2026-06-20T03:13:21.0867716Z             },
2026-06-20T03:13:21.0867821Z             {
2026-06-20T03:13:21.0867973Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-20T03:13:21.0868078Z               "line": 440
2026-06-20T03:13:21.0868168Z             }
2026-06-20T03:13:21.0868279Z           ]
2026-06-20T03:13:21.0868379Z         }
2026-06-20T03:13:21.0868474Z       }
2026-06-20T03:13:21.0868571Z     },
2026-06-20T03:13:21.0868674Z     {
2026-06-20T03:13:21.0868798Z       "id": "REQ-HAZARD-CONPTY-DSR",
2026-06-20T03:13:21.0869117Z       "title": "ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)",
2026-06-20T03:13:21.0869238Z       "requiredStages": [
2026-06-20T03:13:21.0869341Z         "impl",
2026-06-20T03:13:21.0869442Z         "unit"
2026-06-20T03:13:21.0869544Z       ],
2026-06-20T03:13:21.0869646Z       "stages": {
2026-06-20T03:13:21.0869755Z         "doc": {
2026-06-20T03:13:21.0869870Z           "complete": false,
2026-06-20T03:13:21.0869980Z           "evidence": []
2026-06-20T03:13:21.0870084Z         },
2026-06-20T03:13:21.0870195Z         "impl": {
2026-06-20T03:13:21.0870295Z           "complete": true,
2026-06-20T03:13:21.0870403Z           "evidence": [
2026-06-20T03:13:21.0870505Z             {
2026-06-20T03:13:21.0870796Z               "path": "crates/spt-term/src/reader.rs",
2026-06-20T03:13:21.0870905Z               "line": 169
2026-06-20T03:13:21.0871106Z             }
2026-06-20T03:13:21.0871206Z           ]
2026-06-20T03:13:21.0871305Z         },
2026-06-20T03:13:21.0871411Z         "int": {
2026-06-20T03:13:21.0871530Z           "complete": true,
2026-06-20T03:13:21.0871644Z           "evidence": [
2026-06-20T03:13:21.0871740Z             {
2026-06-20T03:13:21.0871887Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-20T03:13:21.0872001Z               "line": 44
2026-06-20T03:13:21.0872100Z             },
2026-06-20T03:13:21.0872199Z             {
2026-06-20T03:13:21.0872341Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-20T03:13:21.0872447Z               "line": 66
2026-06-20T03:13:21.0872552Z             }
2026-06-20T03:13:21.0872651Z           ]
2026-06-20T03:13:21.0872757Z         },
2026-06-20T03:13:21.0872857Z         "unit": {
2026-06-20T03:13:21.0872975Z           "complete": true,
2026-06-20T03:13:21.0873096Z           "evidence": [
2026-06-20T03:13:21.0873190Z             {
2026-06-20T03:13:21.0873339Z               "path": "crates/spt-term/src/reader.rs",
2026-06-20T03:13:21.0873448Z               "line": 186
2026-06-20T03:13:21.0873548Z             },
2026-06-20T03:13:21.0873648Z             {
2026-06-20T03:13:21.0873782Z               "path": "crates/spt-term/src/reader.rs",
2026-06-20T03:13:21.0873900Z               "line": 238
2026-06-20T03:13:21.0873993Z             },
2026-06-20T03:13:21.0874101Z             {
2026-06-20T03:13:21.0874229Z               "path": "crates/spt-term/src/reader.rs",
2026-06-20T03:13:21.0874345Z               "line": 266
2026-06-20T03:13:21.0874439Z             }
2026-06-20T03:13:21.0874535Z           ]
2026-06-20T03:13:21.0874636Z         }
2026-06-20T03:13:21.0874740Z       }
2026-06-20T03:13:21.0874834Z     },
2026-06-20T03:13:21.0874930Z     {
2026-06-20T03:13:21.0875085Z       "id": "REQ-HAZARD-DAEMON-HOSTED-LIVENESS",
2026-06-20T03:13:21.0875537Z       "title": "Daemon-hosted perches (Psyche, spt-hosted Self) derive liveness from the daemon endpoint table + info.json status, never is_process_alive(info.pid) (2.5)",
2026-06-20T03:13:21.0875644Z       "requiredStages": [
2026-06-20T03:13:21.0875753Z         "impl",
2026-06-20T03:13:21.0875857Z         "unit",
2026-06-20T03:13:21.0875968Z         "int"
2026-06-20T03:13:21.0876068Z       ],
2026-06-20T03:13:21.0876181Z       "stages": {
2026-06-20T03:13:21.0876282Z         "doc": {
2026-06-20T03:13:21.0876410Z           "complete": false,
2026-06-20T03:13:21.0876525Z           "evidence": []
2026-06-20T03:13:21.0876630Z         },
2026-06-20T03:13:21.0876735Z         "impl": {
2026-06-20T03:13:21.0876845Z           "complete": true,
2026-06-20T03:13:21.0876955Z           "evidence": [
2026-06-20T03:13:21.0877054Z             {
2026-06-20T03:13:21.0877217Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.0877335Z               "line": 178
2026-06-20T03:13:21.0877439Z             },
2026-06-20T03:13:21.0877544Z             {
2026-06-20T03:13:21.0877694Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.0877804Z               "line": 226
2026-06-20T03:13:21.0877909Z             },
2026-06-20T03:13:21.0878014Z             {
2026-06-20T03:13:21.0878157Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-20T03:13:21.0878262Z               "line": 79
2026-06-20T03:13:21.0878366Z             },
2026-06-20T03:13:21.0878462Z             {
2026-06-20T03:13:21.0878601Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-20T03:13:21.0878705Z               "line": 52
2026-06-20T03:13:21.0878811Z             },
2026-06-20T03:13:21.0878915Z             {
2026-06-20T03:13:21.0879102Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T03:13:21.0879206Z               "line": 263
2026-06-20T03:13:21.0879310Z             },
2026-06-20T03:13:21.0879417Z             {
2026-06-20T03:13:21.0879568Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-20T03:13:21.0879784Z               "line": 27
2026-06-20T03:13:21.0879877Z             },
2026-06-20T03:13:21.0880060Z             {
2026-06-20T03:13:21.0880202Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-20T03:13:21.0880311Z               "line": 79
2026-06-20T03:13:21.0880407Z             },
2026-06-20T03:13:21.0880517Z             {
2026-06-20T03:13:21.0880664Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-20T03:13:21.0880774Z               "line": 102
2026-06-20T03:13:21.0880874Z             },
2026-06-20T03:13:21.0880978Z             {
2026-06-20T03:13:21.0881127Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T03:13:21.0881231Z               "line": 116
2026-06-20T03:13:21.0881337Z             }
2026-06-20T03:13:21.0881437Z           ]
2026-06-20T03:13:21.0881536Z         },
2026-06-20T03:13:21.0881637Z         "int": {
2026-06-20T03:13:21.0881756Z           "complete": true,
2026-06-20T03:13:21.0881851Z           "evidence": [
2026-06-20T03:13:21.0881962Z             {
2026-06-20T03:13:21.0882118Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-20T03:13:21.0882228Z               "line": 43
2026-06-20T03:13:21.0882335Z             }
2026-06-20T03:13:21.0882437Z           ]
2026-06-20T03:13:21.0882537Z         },
2026-06-20T03:13:21.0882637Z         "unit": {
2026-06-20T03:13:21.0882755Z           "complete": true,
2026-06-20T03:13:21.0882872Z           "evidence": [
2026-06-20T03:13:21.0882974Z             {
2026-06-20T03:13:21.0883126Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.0883231Z               "line": 678
2026-06-20T03:13:21.0883336Z             },
2026-06-20T03:13:21.0883441Z             {
2026-06-20T03:13:21.0883589Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T03:13:21.0883694Z               "line": 495
2026-06-20T03:13:21.0883798Z             },
2026-06-20T03:13:21.0883899Z             {
2026-06-20T03:13:21.0884042Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-20T03:13:21.0884150Z               "line": 124
2026-06-20T03:13:21.0884257Z             },
2026-06-20T03:13:21.0884366Z             {
2026-06-20T03:13:21.0884509Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-20T03:13:21.0884619Z               "line": 143
2026-06-20T03:13:21.0884723Z             },
2026-06-20T03:13:21.0884824Z             {
2026-06-20T03:13:21.0884971Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-20T03:13:21.0885072Z               "line": 160
2026-06-20T03:13:21.0885172Z             },
2026-06-20T03:13:21.0885277Z             {
2026-06-20T03:13:21.0885418Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-20T03:13:21.0885533Z               "line": 187
2026-06-20T03:13:21.0885636Z             },
2026-06-20T03:13:21.0885735Z             {
2026-06-20T03:13:21.0885889Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-20T03:13:21.0886003Z               "line": 206
2026-06-20T03:13:21.0886112Z             },
2026-06-20T03:13:21.0886213Z             {
2026-06-20T03:13:21.0886360Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T03:13:21.0886476Z               "line": 229
2026-06-20T03:13:21.0886571Z             }
2026-06-20T03:13:21.0886675Z           ]
2026-06-20T03:13:21.0886775Z         }
2026-06-20T03:13:21.0886880Z       }
2026-06-20T03:13:21.0886975Z     },
2026-06-20T03:13:21.0887080Z     {
2026-06-20T03:13:21.0887233Z       "id": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
2026-06-20T03:13:21.0887900Z       "title": "Per-agent pulse/psyche/echo-commune scheduling must not serialize across agents: each agent's bounded LLM call (echo-commune summarizer, Psyche turn) runs off the shared scheduler so one slow/hung call cannot stall another agent's tick (7.4)",
2026-06-20T03:13:21.0888023Z       "requiredStages": [
2026-06-20T03:13:21.0888128Z         "impl",
2026-06-20T03:13:21.0888231Z         "unit"
2026-06-20T03:13:21.0888326Z       ],
2026-06-20T03:13:21.0888532Z       "stages": {
2026-06-20T03:13:21.0888636Z         "doc": {
2026-06-20T03:13:21.0888761Z           "complete": false,
2026-06-20T03:13:21.0889023Z           "evidence": []
2026-06-20T03:13:21.0889118Z         },
2026-06-20T03:13:21.0889222Z         "impl": {
2026-06-20T03:13:21.0889338Z           "complete": true,
2026-06-20T03:13:21.0889447Z           "evidence": [
2026-06-20T03:13:21.0889551Z             {
2026-06-20T03:13:21.0889700Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.0889819Z               "line": 1136
2026-06-20T03:13:21.0889919Z             },
2026-06-20T03:13:21.0890020Z             {
2026-06-20T03:13:21.0890167Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.0890272Z               "line": 1362
2026-06-20T03:13:21.0890378Z             }
2026-06-20T03:13:21.0890481Z           ]
2026-06-20T03:13:21.0890577Z         },
2026-06-20T03:13:21.0890683Z         "int": {
2026-06-20T03:13:21.0890800Z           "complete": false,
2026-06-20T03:13:21.0890914Z           "evidence": []
2026-06-20T03:13:21.0891024Z         },
2026-06-20T03:13:21.0891133Z         "unit": {
2026-06-20T03:13:21.0891248Z           "complete": true,
2026-06-20T03:13:21.0891358Z           "evidence": [
2026-06-20T03:13:21.0891453Z             {
2026-06-20T03:13:21.0891616Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-20T03:13:21.0891716Z               "line": 161
2026-06-20T03:13:21.0891825Z             }
2026-06-20T03:13:21.0891931Z           ]
2026-06-20T03:13:21.0892030Z         }
2026-06-20T03:13:21.0892130Z       }
2026-06-20T03:13:21.0892231Z     },
2026-06-20T03:13:21.0892330Z     {
2026-06-20T03:13:21.0892478Z       "id": "REQ-HAZARD-DAEMON-STOP-BARRIER",
2026-06-20T03:13:21.0894263Z       "title": "B3: `spt daemon stop` then an immediate `spt daemon start` does NOT race — stop fully completes before it returns. Today request_stop (seedmap.rs:240-255) returns on the KIND_STOPPING ack (sent seedmap.rs:174-176) BEFORE the seed socket unbinds, so a following is_running ping (daemon.rs:375) wins the exit window and start reports ALREADY_RUNNING (operator: daemon stop → STOPPED then start → ALREADY_RUNNING). FIX: unbind/stop-gate the seed socket BEFORE acking KIND_STOPPING, OR request_stop waits for a ping-to-fail before returning. Unit: stop then immediate is_running()==false. (v0.12.0)",
2026-06-20T03:13:21.0894425Z       "requiredStages": [
2026-06-20T03:13:21.0894521Z         "impl",
2026-06-20T03:13:21.0894630Z         "unit"
2026-06-20T03:13:21.0894735Z       ],
2026-06-20T03:13:21.0894850Z       "stages": {
2026-06-20T03:13:21.0894959Z         "doc": {
2026-06-20T03:13:21.0895069Z           "complete": false,
2026-06-20T03:13:21.0895184Z           "evidence": []
2026-06-20T03:13:21.0895283Z         },
2026-06-20T03:13:21.0895394Z         "impl": {
2026-06-20T03:13:21.0895508Z           "complete": true,
2026-06-20T03:13:21.0895617Z           "evidence": [
2026-06-20T03:13:21.0895719Z             {
2026-06-20T03:13:21.0895888Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-20T03:13:21.0895997Z               "line": 257
2026-06-20T03:13:21.0896126Z             }
2026-06-20T03:13:21.0896229Z           ]
2026-06-20T03:13:21.0896328Z         },
2026-06-20T03:13:21.0896439Z         "int": {
2026-06-20T03:13:21.0896563Z           "complete": false,
2026-06-20T03:13:21.0896672Z           "evidence": []
2026-06-20T03:13:21.0896778Z         },
2026-06-20T03:13:21.0896882Z         "unit": {
2026-06-20T03:13:21.0897002Z           "complete": true,
2026-06-20T03:13:21.0897111Z           "evidence": [
2026-06-20T03:13:21.0897211Z             {
2026-06-20T03:13:21.0897365Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-20T03:13:21.0897474Z               "line": 360
2026-06-20T03:13:21.0897583Z             }
2026-06-20T03:13:21.0897685Z           ]
2026-06-20T03:13:21.0897793Z         }
2026-06-20T03:13:21.0897893Z       }
2026-06-20T03:13:21.0897999Z     },
2026-06-20T03:13:21.0898103Z     {
2026-06-20T03:13:21.0898347Z       "id": "REQ-HAZARD-DAEMON-STOP-REAP",
2026-06-20T03:13:21.0900242Z       "title": "Breap: `spt daemon stop` REAPS the spt-hosted children it spawned — no orphaned psyche/harness processes. Today a stop leaves ~8 orphaned claude-spt-psyche.exe + spt.exe: Psyches are spawned DETACHED (runtime.rs:342-356, the Child is dropped — 'Detached' ~349) and the livehost stop flag Arc<AtomicBool> is NEVER raised (brainproc.rs:227-230 holds it 'for symmetry'). FIX: on stop, raise the livehost stop flag AND kill the spawned psyche/spt-hosted children — via a Windows job object / Unix process-group so the children die with the daemon (not detached-immortal). Folds with B3 (both the stop path). (v0.12.0)",
2026-06-20T03:13:21.0900469Z       "requiredStages": [
2026-06-20T03:13:21.0900575Z         "impl",
2026-06-20T03:13:21.0900684Z         "unit"
2026-06-20T03:13:21.0900774Z       ],
2026-06-20T03:13:21.0900886Z       "stages": {
2026-06-20T03:13:21.0900984Z         "doc": {
2026-06-20T03:13:21.0901108Z           "complete": false,
2026-06-20T03:13:21.0901248Z           "evidence": []
2026-06-20T03:13:21.0901351Z         },
2026-06-20T03:13:21.0901489Z         "impl": {
2026-06-20T03:13:21.0901604Z           "complete": true,
2026-06-20T03:13:21.0901712Z           "evidence": [
2026-06-20T03:13:21.0901813Z             {
2026-06-20T03:13:21.0901967Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.0902075Z               "line": 1018
2026-06-20T03:13:21.0902181Z             },
2026-06-20T03:13:21.0902286Z             {
2026-06-20T03:13:21.0902438Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.0902558Z               "line": 283
2026-06-20T03:13:21.0902657Z             },
2026-06-20T03:13:21.0902762Z             {
2026-06-20T03:13:21.0902914Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.0903019Z               "line": 316
2026-06-20T03:13:21.0903125Z             },
2026-06-20T03:13:21.0903229Z             {
2026-06-20T03:13:21.0903378Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-20T03:13:21.0903483Z               "line": 26
2026-06-20T03:13:21.0903596Z             }
2026-06-20T03:13:21.0903700Z           ]
2026-06-20T03:13:21.0903805Z         },
2026-06-20T03:13:21.0903913Z         "int": {
2026-06-20T03:13:21.0904031Z           "complete": false,
2026-06-20T03:13:21.0904147Z           "evidence": []
2026-06-20T03:13:21.0904241Z         },
2026-06-20T03:13:21.0904336Z         "unit": {
2026-06-20T03:13:21.0904448Z           "complete": true,
2026-06-20T03:13:21.0904552Z           "evidence": [
2026-06-20T03:13:21.0904656Z             {
2026-06-20T03:13:21.0904800Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-20T03:13:21.0904908Z               "line": 271
2026-06-20T03:13:21.0905015Z             },
2026-06-20T03:13:21.0905119Z             {
2026-06-20T03:13:21.0905266Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-20T03:13:21.0905372Z               "line": 348
2026-06-20T03:13:21.0905486Z             }
2026-06-20T03:13:21.0905591Z           ]
2026-06-20T03:13:21.0905697Z         }
2026-06-20T03:13:21.0905814Z       }
2026-06-20T03:13:21.0905920Z     },
2026-06-20T03:13:21.0906022Z     {
2026-06-20T03:13:21.0906158Z       "id": "REQ-HAZARD-DEFERRED-DRAIN",
2026-06-20T03:13:21.0906374Z       "title": "Deferred spool rows excluded from the event-stream drain (1.4)",
2026-06-20T03:13:21.0906486Z       "requiredStages": [
2026-06-20T03:13:21.0906586Z         "impl",
2026-06-20T03:13:21.0906687Z         "unit"
2026-06-20T03:13:21.0906789Z       ],
2026-06-20T03:13:21.0906893Z       "stages": {
2026-06-20T03:13:21.0907000Z         "doc": {
2026-06-20T03:13:21.0907118Z           "complete": false,
2026-06-20T03:13:21.0907232Z           "evidence": []
2026-06-20T03:13:21.0907343Z         },
2026-06-20T03:13:21.0907451Z         "impl": {
2026-06-20T03:13:21.0907572Z           "complete": true,
2026-06-20T03:13:21.0907686Z           "evidence": [
2026-06-20T03:13:21.0907790Z             {
2026-06-20T03:13:21.0908034Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T03:13:21.0908148Z               "line": 40
2026-06-20T03:13:21.0908315Z             },
2026-06-20T03:13:21.0908420Z             {
2026-06-20T03:13:21.0908564Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T03:13:21.0908682Z               "line": 103
2026-06-20T03:13:21.0908783Z             },
2026-06-20T03:13:21.0908894Z             {
2026-06-20T03:13:21.0909110Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T03:13:21.0909230Z               "line": 218
2026-06-20T03:13:21.0909328Z             },
2026-06-20T03:13:21.0909432Z             {
2026-06-20T03:13:21.0909576Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T03:13:21.0909685Z               "line": 323
2026-06-20T03:13:21.0909790Z             }
2026-06-20T03:13:21.0909895Z           ]
2026-06-20T03:13:21.0910000Z         },
2026-06-20T03:13:21.0910104Z         "int": {
2026-06-20T03:13:21.0910229Z           "complete": false,
2026-06-20T03:13:21.0910362Z           "evidence": []
2026-06-20T03:13:21.0910458Z         },
2026-06-20T03:13:21.0910572Z         "unit": {
2026-06-20T03:13:21.0910691Z           "complete": true,
2026-06-20T03:13:21.0910812Z           "evidence": [
2026-06-20T03:13:21.0910920Z             {
2026-06-20T03:13:21.0911063Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T03:13:21.0911173Z               "line": 361
2026-06-20T03:13:21.0911273Z             },
2026-06-20T03:13:21.0911378Z             {
2026-06-20T03:13:21.0911521Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T03:13:21.0911626Z               "line": 433
2026-06-20T03:13:21.0911722Z             },
2026-06-20T03:13:21.0911827Z             {
2026-06-20T03:13:21.0911972Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T03:13:21.0912083Z               "line": 496
2026-06-20T03:13:21.0912184Z             },
2026-06-20T03:13:21.0912283Z             {
2026-06-20T03:13:21.0912421Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T03:13:21.0912531Z               "line": 517
2026-06-20T03:13:21.0912640Z             }
2026-06-20T03:13:21.0912746Z           ]
2026-06-20T03:13:21.0912846Z         }
2026-06-20T03:13:21.0912954Z       }
2026-06-20T03:13:21.0913056Z     },
2026-06-20T03:13:21.0913160Z     {
2026-06-20T03:13:21.0913298Z       "id": "REQ-HAZARD-DEFERRED-MANIFEST",
2026-06-20T03:13:21.0915675Z       "title": "A pointer-mode (delegated / GhReleaseManaged) adapter whose binary/manifest is not yet extracted is reported with a CLEAR diagnostic, never silently dropped. Today such an adapter reads its manifest LIVE from source_dir (registry.rs manifest_dir ~146/149); a deferred / un-extracted install makes load_manifest fail → registered() (~410, filter_map(.ok())) SILENTLY DROPS the row → downstream ADAPTER_UNRESOLVED + a cryptic os-error-2 on `spt adapter use`. FIX: surface a clear diagnostic at the resolver + at `adapter use` (name the adapter + the deferred/missing-manifest cause + the fix), not a silent filter-drop and not a bare os-error-2; consider an eager manifest copy at register time so host_binaries survive before the binary download completes. doyle Finding A. (post-v0.10.0)",
2026-06-20T03:13:21.0915826Z       "requiredStages": [
2026-06-20T03:13:21.0915937Z         "impl",
2026-06-20T03:13:21.0916046Z         "unit"
2026-06-20T03:13:21.0916151Z       ],
2026-06-20T03:13:21.0916262Z       "stages": {
2026-06-20T03:13:21.0916370Z         "doc": {
2026-06-20T03:13:21.0916495Z           "complete": false,
2026-06-20T03:13:21.0916610Z           "evidence": []
2026-06-20T03:13:21.0916723Z         },
2026-06-20T03:13:21.0916834Z         "impl": {
2026-06-20T03:13:21.0916958Z           "complete": true,
2026-06-20T03:13:21.0917070Z           "evidence": [
2026-06-20T03:13:21.0917180Z             {
2026-06-20T03:13:21.0917326Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.0917440Z               "line": 402
2026-06-20T03:13:21.0917545Z             },
2026-06-20T03:13:21.0917764Z             {
2026-06-20T03:13:21.0917922Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.0918122Z               "line": 446
2026-06-20T03:13:21.0918232Z             }
2026-06-20T03:13:21.0918336Z           ]
2026-06-20T03:13:21.0918446Z         },
2026-06-20T03:13:21.0918552Z         "int": {
2026-06-20T03:13:21.0918665Z           "complete": false,
2026-06-20T03:13:21.0918771Z           "evidence": []
2026-06-20T03:13:21.0918876Z         },
2026-06-20T03:13:21.0919076Z         "unit": {
2026-06-20T03:13:21.0919186Z           "complete": true,
2026-06-20T03:13:21.0919300Z           "evidence": [
2026-06-20T03:13:21.0919401Z             {
2026-06-20T03:13:21.0919552Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.0919661Z               "line": 910
2026-06-20T03:13:21.0919761Z             }
2026-06-20T03:13:21.0919865Z           ]
2026-06-20T03:13:21.0919968Z         }
2026-06-20T03:13:21.0920073Z       }
2026-06-20T03:13:21.0920180Z     },
2026-06-20T03:13:21.0920278Z     {
2026-06-20T03:13:21.0920428Z       "id": "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN",
2026-06-20T03:13:21.0920583Z       "title": "Deferred rows survive poll drain (4.4)",
2026-06-20T03:13:21.0920699Z       "requiredStages": [
2026-06-20T03:13:21.0920803Z         "impl",
2026-06-20T03:13:21.0920907Z         "unit"
2026-06-20T03:13:21.0921014Z       ],
2026-06-20T03:13:21.0921118Z       "stages": {
2026-06-20T03:13:21.0921218Z         "doc": {
2026-06-20T03:13:21.0921338Z           "complete": false,
2026-06-20T03:13:21.0921461Z           "evidence": []
2026-06-20T03:13:21.0921566Z         },
2026-06-20T03:13:21.0921677Z         "impl": {
2026-06-20T03:13:21.0921799Z           "complete": true,
2026-06-20T03:13:21.0921914Z           "evidence": [
2026-06-20T03:13:21.0922006Z             {
2026-06-20T03:13:21.0922157Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T03:13:21.0922278Z               "line": 116
2026-06-20T03:13:21.0922382Z             },
2026-06-20T03:13:21.0922490Z             {
2026-06-20T03:13:21.0922638Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T03:13:21.0922758Z               "line": 211
2026-06-20T03:13:21.0922867Z             }
2026-06-20T03:13:21.0922967Z           ]
2026-06-20T03:13:21.0923077Z         },
2026-06-20T03:13:21.0923181Z         "int": {
2026-06-20T03:13:21.0923307Z           "complete": false,
2026-06-20T03:13:21.0923420Z           "evidence": []
2026-06-20T03:13:21.0923524Z         },
2026-06-20T03:13:21.0923631Z         "unit": {
2026-06-20T03:13:21.0923740Z           "complete": true,
2026-06-20T03:13:21.0923858Z           "evidence": [
2026-06-20T03:13:21.0923960Z             {
2026-06-20T03:13:21.0924102Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T03:13:21.0924217Z               "line": 388
2026-06-20T03:13:21.0924322Z             },
2026-06-20T03:13:21.0924431Z             {
2026-06-20T03:13:21.0924566Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T03:13:21.0924693Z               "line": 469
2026-06-20T03:13:21.0924792Z             }
2026-06-20T03:13:21.0924897Z           ]
2026-06-20T03:13:21.0925000Z         }
2026-06-20T03:13:21.0925104Z       }
2026-06-20T03:13:21.0925215Z     },
2026-06-20T03:13:21.0925315Z     {
2026-06-20T03:13:21.0925477Z       "id": "REQ-HAZARD-DETACHED-PIPE-INHERIT",
2026-06-20T03:13:21.0926626Z       "title": "Windows detached long-lived children must not inherit a captured caller's pipe: every detach-spawn of an immortal child (daemon, shell binary) runs bInheritHandles=FALSE, or a caller capturing output anywhere up the process chain hangs forever on a pipe that never EOFs — std-handle flag stripping is NOT sufficient (grandparent strays still flow) (5.6)",
2026-06-20T03:13:21.0926755Z       "requiredStages": [
2026-06-20T03:13:21.0926874Z         "impl",
2026-06-20T03:13:21.0926984Z         "unit"
2026-06-20T03:13:21.0927089Z       ],
2026-06-20T03:13:21.0927194Z       "stages": {
2026-06-20T03:13:21.0927452Z         "doc": {
2026-06-20T03:13:21.0927603Z           "complete": true,
2026-06-20T03:13:21.0927712Z           "evidence": [
2026-06-20T03:13:21.0927915Z             {
2026-06-20T03:13:21.0928043Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T03:13:21.0928154Z               "line": 206
2026-06-20T03:13:21.0928258Z             }
2026-06-20T03:13:21.0928358Z           ]
2026-06-20T03:13:21.0928464Z         },
2026-06-20T03:13:21.0928572Z         "impl": {
2026-06-20T03:13:21.0928687Z           "complete": true,
2026-06-20T03:13:21.0928788Z           "evidence": [
2026-06-20T03:13:21.0928897Z             {
2026-06-20T03:13:21.0929154Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.0929278Z               "line": 691
2026-06-20T03:13:21.0929389Z             },
2026-06-20T03:13:21.0929483Z             {
2026-06-20T03:13:21.0929636Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.0929747Z               "line": 791
2026-06-20T03:13:21.0929865Z             },
2026-06-20T03:13:21.0929966Z             {
2026-06-20T03:13:21.0930118Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.0930240Z               "line": 1120
2026-06-20T03:13:21.0930340Z             },
2026-06-20T03:13:21.0930453Z             {
2026-06-20T03:13:21.0930605Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T03:13:21.0930725Z               "line": 184
2026-06-20T03:13:21.0930820Z             }
2026-06-20T03:13:21.0930934Z           ]
2026-06-20T03:13:21.0931040Z         },
2026-06-20T03:13:21.0931144Z         "int": {
2026-06-20T03:13:21.0931269Z           "complete": false,
2026-06-20T03:13:21.0931368Z           "evidence": []
2026-06-20T03:13:21.0931473Z         },
2026-06-20T03:13:21.0931574Z         "unit": {
2026-06-20T03:13:21.0931697Z           "complete": true,
2026-06-20T03:13:21.0931811Z           "evidence": [
2026-06-20T03:13:21.0931913Z             {
2026-06-20T03:13:21.0932060Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.0932184Z               "line": 1169
2026-06-20T03:13:21.0932280Z             },
2026-06-20T03:13:21.0932388Z             {
2026-06-20T03:13:21.0932552Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-20T03:13:21.0932661Z               "line": 44
2026-06-20T03:13:21.0932770Z             },
2026-06-20T03:13:21.0932881Z             {
2026-06-20T03:13:21.0933031Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-20T03:13:21.0933140Z               "line": 52
2026-06-20T03:13:21.0933242Z             },
2026-06-20T03:13:21.0933351Z             {
2026-06-20T03:13:21.0933504Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-20T03:13:21.0933608Z               "line": 57
2026-06-20T03:13:21.0933713Z             },
2026-06-20T03:13:21.0933814Z             {
2026-06-20T03:13:21.0933990Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-20T03:13:21.0934094Z               "line": 54
2026-06-20T03:13:21.0934210Z             }
2026-06-20T03:13:21.0934319Z           ]
2026-06-20T03:13:21.0934414Z         }
2026-06-20T03:13:21.0934525Z       }
2026-06-20T03:13:21.0934629Z     },
2026-06-20T03:13:21.0934734Z     {
2026-06-20T03:13:21.0934882Z       "id": "REQ-HAZARD-DIRECT-WRITE-PRECEDENCE",
2026-06-20T03:13:21.0935131Z       "title": "Direct-write precedence marker (with node id) guards stale overwrite (6.5)",
2026-06-20T03:13:21.0935257Z       "requiredStages": [
2026-06-20T03:13:21.0935357Z         "impl",
2026-06-20T03:13:21.0935467Z         "unit"
2026-06-20T03:13:21.0935570Z       ],
2026-06-20T03:13:21.0935678Z       "stages": {
2026-06-20T03:13:21.0935789Z         "doc": {
2026-06-20T03:13:21.0935913Z           "complete": false,
2026-06-20T03:13:21.0936032Z           "evidence": []
2026-06-20T03:13:21.0936133Z         },
2026-06-20T03:13:21.0936246Z         "impl": {
2026-06-20T03:13:21.0936366Z           "complete": true,
2026-06-20T03:13:21.0936485Z           "evidence": [
2026-06-20T03:13:21.0936739Z             {
2026-06-20T03:13:21.0936890Z               "path": "crates/spt-live/src/context.rs",
2026-06-20T03:13:21.0937100Z               "line": 26
2026-06-20T03:13:21.0937200Z             },
2026-06-20T03:13:21.0937310Z             {
2026-06-20T03:13:21.0937457Z               "path": "crates/spt-live/src/context.rs",
2026-06-20T03:13:21.0937577Z               "line": 135
2026-06-20T03:13:21.0937678Z             },
2026-06-20T03:13:21.0937782Z             {
2026-06-20T03:13:21.0937940Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-20T03:13:21.0938041Z               "line": 26
2026-06-20T03:13:21.0938144Z             },
2026-06-20T03:13:21.0938248Z             {
2026-06-20T03:13:21.0938400Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-20T03:13:21.0938513Z               "line": 237
2026-06-20T03:13:21.0938618Z             }
2026-06-20T03:13:21.0938728Z           ]
2026-06-20T03:13:21.0938832Z         },
2026-06-20T03:13:21.0939029Z         "int": {
2026-06-20T03:13:21.0939152Z           "complete": false,
2026-06-20T03:13:21.0939272Z           "evidence": []
2026-06-20T03:13:21.0939381Z         },
2026-06-20T03:13:21.0939485Z         "unit": {
2026-06-20T03:13:21.0939591Z           "complete": true,
2026-06-20T03:13:21.0939700Z           "evidence": [
2026-06-20T03:13:21.0939805Z             {
2026-06-20T03:13:21.0939954Z               "path": "crates/spt-live/src/context.rs",
2026-06-20T03:13:21.0940062Z               "line": 161
2026-06-20T03:13:21.0940172Z             },
2026-06-20T03:13:21.0940278Z             {
2026-06-20T03:13:21.0940425Z               "path": "crates/spt-live/src/context.rs",
2026-06-20T03:13:21.0940531Z               "line": 170
2026-06-20T03:13:21.0940640Z             },
2026-06-20T03:13:21.0940743Z             {
2026-06-20T03:13:21.0940877Z               "path": "crates/spt-live/src/context.rs",
2026-06-20T03:13:21.0940985Z               "line": 179
2026-06-20T03:13:21.0941093Z             },
2026-06-20T03:13:21.0941199Z             {
2026-06-20T03:13:21.0941347Z               "path": "crates/spt-live/src/context.rs",
2026-06-20T03:13:21.0941456Z               "line": 190
2026-06-20T03:13:21.0941557Z             },
2026-06-20T03:13:21.0941657Z             {
2026-06-20T03:13:21.0941804Z               "path": "crates/spt-live/src/context.rs",
2026-06-20T03:13:21.0941919Z               "line": 199
2026-06-20T03:13:21.0942028Z             },
2026-06-20T03:13:21.0942119Z             {
2026-06-20T03:13:21.0942267Z               "path": "crates/spt-live/src/context.rs",
2026-06-20T03:13:21.0942372Z               "line": 216
2026-06-20T03:13:21.0942473Z             },
2026-06-20T03:13:21.0942577Z             {
2026-06-20T03:13:21.0942720Z               "path": "crates/spt-live/src/context.rs",
2026-06-20T03:13:21.0942826Z               "line": 242
2026-06-20T03:13:21.0942930Z             },
2026-06-20T03:13:21.0943039Z             {
2026-06-20T03:13:21.0943179Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-20T03:13:21.0943302Z               "line": 295
2026-06-20T03:13:21.0943413Z             },
2026-06-20T03:13:21.0943517Z             {
2026-06-20T03:13:21.0943663Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-20T03:13:21.0943768Z               "line": 244
2026-06-20T03:13:21.0943879Z             },
2026-06-20T03:13:21.0943982Z             {
2026-06-20T03:13:21.0944141Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-20T03:13:21.0944254Z               "line": 265
2026-06-20T03:13:21.0944359Z             },
2026-06-20T03:13:21.0944470Z             {
2026-06-20T03:13:21.0944626Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-20T03:13:21.0944741Z               "line": 293
2026-06-20T03:13:21.0944836Z             },
2026-06-20T03:13:21.0944935Z             {
2026-06-20T03:13:21.0945080Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-20T03:13:21.0945189Z               "line": 317
2026-06-20T03:13:21.0945294Z             },
2026-06-20T03:13:21.0945400Z             {
2026-06-20T03:13:21.0945657Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-20T03:13:21.0945870Z               "line": 327
2026-06-20T03:13:21.0945970Z             },
2026-06-20T03:13:21.0946079Z             {
2026-06-20T03:13:21.0946230Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-20T03:13:21.0946340Z               "line": 540
2026-06-20T03:13:21.0946450Z             }
2026-06-20T03:13:21.0946559Z           ]
2026-06-20T03:13:21.0946664Z         }
2026-06-20T03:13:21.0946765Z       }
2026-06-20T03:13:21.0946873Z     },
2026-06-20T03:13:21.0946970Z     {
2026-06-20T03:13:21.0947131Z       "id": "REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT",
2026-06-20T03:13:21.0954715Z       "title": "An spt-hosted endpoint driven by a REMOTE controller whose remote is gone but whose broker connection stays OPEN (a wedged/lost pump that never delivers the detach) AND whose session is IDLE (no output) stays latched ONLINE+CONTROLLED forever: the W1 drain-evict only fires on OUTPUT (CONTROLLER_WRITE_DEADLINE on a backed-up write), a clean disconnect self-heals via detach_if→clear_controller, but an idle session with a half-open/wedged controller connection produces neither signal. PROVED repro-first on a real broker (v0.13.0 W5, inject_control_wedge.rs w5_a2): controller_by STAYS Some(origin) and driven_by STAYS Some after the remote is abandoned without a clean EOF on an idle session — so the brain reconcile CANNOT detect it from KIND_SESSIONS controller_by (the broker still reports it controlled). FIX DIRECTION (doyle ruling 2026-06-19, broker-side single-writer — the broker owns driven_by/clear_controller): wire the EXISTING D4c NetPresence connection-disconnect event → clear_controller for any session whose controller identity == the dead origin (become_controller already stores Some(origin); presence events already exist — modest wiring, NOT a new probe). The liveness ORACLE is QUIC's own keepalive/idle-timeout: a presence-disconnect IS a real QUIC conn close, already tolerant of transient blips within the keepalive window, so NO heavy partition ADR is needed UNLESS the QUIC timeout proves too slow for the UX (then mint an ADR for a faster controller-heartbeat + its false-evict bound). Composes with W1 (output path) + W5 Gap B (no-session) — this is the third, idle-remote, leg. (v0.13.0 follow-up)",
2026-06-20T03:13:21.0954992Z       "requiredStages": [],
2026-06-20T03:13:21.0955097Z       "stages": {
2026-06-20T03:13:21.0955210Z         "doc": {
2026-06-20T03:13:21.0955330Z           "complete": false,
2026-06-20T03:13:21.0955449Z           "evidence": []
2026-06-20T03:13:21.0955559Z         },
2026-06-20T03:13:21.0955669Z         "impl": {
2026-06-20T03:13:21.0955787Z           "complete": false,
2026-06-20T03:13:21.0955883Z           "evidence": []
2026-06-20T03:13:21.0955988Z         },
2026-06-20T03:13:21.0956087Z         "int": {
2026-06-20T03:13:21.0956198Z           "complete": false,
2026-06-20T03:13:21.0956317Z           "evidence": []
2026-06-20T03:13:21.0956416Z         },
2026-06-20T03:13:21.0956549Z         "unit": {
2026-06-20T03:13:21.0956663Z           "complete": false,
2026-06-20T03:13:21.0956809Z           "evidence": []
2026-06-20T03:13:21.0956900Z         }
2026-06-20T03:13:21.0957001Z       }
2026-06-20T03:13:21.0957095Z     },
2026-06-20T03:13:21.0957191Z     {
2026-06-20T03:13:21.0957343Z       "id": "REQ-HAZARD-DRIVEN-BY-SELFHEAL",
2026-06-20T03:13:21.0958935Z       "title": "An spt-hosted endpoint's ONLINE+CONTROLLED state (`driven_by`) must CLEAR even when the detach IPC is lost — do NOT rely on the detach signal (same lesson as REQ-HAZARD-HOSTED-LIVENESS-RECONCILE B2): the reconcile loop clears `driven_by` when the endpoint has no live controller/session. Today a wedged or lost pump never delivers the detach, so the endpoint stays latched CONTROLLED forever. Composes with W1 (the wedge no longer blocks the detach) and rides the same pull-primary reconcile substrate as B2. (v0.13.0)",
2026-06-20T03:13:21.0959166Z       "requiredStages": [
2026-06-20T03:13:21.0959431Z         "impl",
2026-06-20T03:13:21.0959539Z         "unit",
2026-06-20T03:13:21.0959647Z         "int"
2026-06-20T03:13:21.0959892Z       ],
2026-06-20T03:13:21.0960000Z       "stages": {
2026-06-20T03:13:21.0960102Z         "doc": {
2026-06-20T03:13:21.0960211Z           "complete": false,
2026-06-20T03:13:21.0960334Z           "evidence": []
2026-06-20T03:13:21.0960440Z         },
2026-06-20T03:13:21.0960545Z         "impl": {
2026-06-20T03:13:21.0960659Z           "complete": true,
2026-06-20T03:13:21.0960779Z           "evidence": [
2026-06-20T03:13:21.0960883Z             {
2026-06-20T03:13:21.0961041Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.0961154Z               "line": 538
2026-06-20T03:13:21.0961249Z             },
2026-06-20T03:13:21.0961356Z             {
2026-06-20T03:13:21.0961502Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-20T03:13:21.0961608Z               "line": 607
2026-06-20T03:13:21.0961714Z             },
2026-06-20T03:13:21.0961821Z             {
2026-06-20T03:13:21.0962002Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-20T03:13:21.0962125Z               "line": 21
2026-06-20T03:13:21.0962229Z             }
2026-06-20T03:13:21.0962329Z           ]
2026-06-20T03:13:21.0962435Z         },
2026-06-20T03:13:21.0962543Z         "int": {
2026-06-20T03:13:21.0962659Z           "complete": true,
2026-06-20T03:13:21.0962768Z           "evidence": [
2026-06-20T03:13:21.0962867Z             {
2026-06-20T03:13:21.0963030Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-20T03:13:21.0963139Z               "line": 236
2026-06-20T03:13:21.0963245Z             },
2026-06-20T03:13:21.0963350Z             {
2026-06-20T03:13:21.0963516Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-20T03:13:21.0963632Z               "line": 396
2026-06-20T03:13:21.0963726Z             },
2026-06-20T03:13:21.0963831Z             {
2026-06-20T03:13:21.0964003Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-20T03:13:21.0964117Z               "line": 1441
2026-06-20T03:13:21.0964228Z             },
2026-06-20T03:13:21.0964313Z             {
2026-06-20T03:13:21.0964485Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-20T03:13:21.0964600Z               "line": 1593
2026-06-20T03:13:21.0964702Z             }
2026-06-20T03:13:21.0964807Z           ]
2026-06-20T03:13:21.0964913Z         },
2026-06-20T03:13:21.0965022Z         "unit": {
2026-06-20T03:13:21.0965136Z           "complete": true,
2026-06-20T03:13:21.0965242Z           "evidence": [
2026-06-20T03:13:21.0965342Z             {
2026-06-20T03:13:21.0965494Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.0965609Z               "line": 887
2026-06-20T03:13:21.0965703Z             }
2026-06-20T03:13:21.0965814Z           ]
2026-06-20T03:13:21.0965919Z         }
2026-06-20T03:13:21.0966018Z       }
2026-06-20T03:13:21.0966124Z     },
2026-06-20T03:13:21.0966229Z     {
2026-06-20T03:13:21.0966376Z       "id": "REQ-HAZARD-DROP-FILE-SINGLE-WRITER",
2026-06-20T03:13:21.0966553Z       "title": "Drop files are daemon-owned single-writer (6.4)",
2026-06-20T03:13:21.0966676Z       "requiredStages": [
2026-06-20T03:13:21.0966782Z         "impl",
2026-06-20T03:13:21.0966882Z         "unit"
2026-06-20T03:13:21.0966976Z       ],
2026-06-20T03:13:21.0967090Z       "stages": {
2026-06-20T03:13:21.0967195Z         "doc": {
2026-06-20T03:13:21.0967322Z           "complete": false,
2026-06-20T03:13:21.0967436Z           "evidence": []
2026-06-20T03:13:21.0967542Z         },
2026-06-20T03:13:21.0967646Z         "impl": {
2026-06-20T03:13:21.0967761Z           "complete": true,
2026-06-20T03:13:21.0967866Z           "evidence": [
2026-06-20T03:13:21.0967965Z             {
2026-06-20T03:13:21.0968114Z               "path": "crates/spt-live/src/echo.rs",
2026-06-20T03:13:21.0968228Z               "line": 25
2026-06-20T03:13:21.0968332Z             },
2026-06-20T03:13:21.0968519Z             {
2026-06-20T03:13:21.0968662Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-20T03:13:21.0968848Z               "line": 26
2026-06-20T03:13:21.0969030Z             },
2026-06-20T03:13:21.0969124Z             {
2026-06-20T03:13:21.0969267Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-20T03:13:21.0969378Z               "line": 159
2026-06-20T03:13:21.0969481Z             }
2026-06-20T03:13:21.0969587Z           ]
2026-06-20T03:13:21.0969693Z         },
2026-06-20T03:13:21.0969792Z         "int": {
2026-06-20T03:13:21.0969914Z           "complete": false,
2026-06-20T03:13:21.0970024Z           "evidence": []
2026-06-20T03:13:21.0970132Z         },
2026-06-20T03:13:21.0970236Z         "unit": {
2026-06-20T03:13:21.0970356Z           "complete": true,
2026-06-20T03:13:21.0970470Z           "evidence": [
2026-06-20T03:13:21.0970575Z             {
2026-06-20T03:13:21.0970714Z               "path": "crates/spt-live/src/echo.rs",
2026-06-20T03:13:21.0970842Z               "line": 188
2026-06-20T03:13:21.0970943Z             },
2026-06-20T03:13:21.0971043Z             {
2026-06-20T03:13:21.0971185Z               "path": "crates/spt-live/src/echo.rs",
2026-06-20T03:13:21.0971291Z               "line": 240
2026-06-20T03:13:21.0971391Z             },
2026-06-20T03:13:21.0971495Z             {
2026-06-20T03:13:21.0971644Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-20T03:13:21.0971752Z               "line": 186
2026-06-20T03:13:21.0971858Z             }
2026-06-20T03:13:21.0971949Z           ]
2026-06-20T03:13:21.0972048Z         }
2026-06-20T03:13:21.0972144Z       }
2026-06-20T03:13:21.0972250Z     },
2026-06-20T03:13:21.0972354Z     {
2026-06-20T03:13:21.0972486Z       "id": "REQ-HAZARD-EBUSY-RENAME",
2026-06-20T03:13:21.0972685Z       "title": "tmp-write + atomic-rename + retry on Windows EBUSY (5.2)",
2026-06-20T03:13:21.0972798Z       "requiredStages": [
2026-06-20T03:13:21.0972908Z         "impl",
2026-06-20T03:13:21.0973019Z         "unit"
2026-06-20T03:13:21.0973127Z       ],
2026-06-20T03:13:21.0973229Z       "stages": {
2026-06-20T03:13:21.0973334Z         "doc": {
2026-06-20T03:13:21.0973457Z           "complete": false,
2026-06-20T03:13:21.0973567Z           "evidence": []
2026-06-20T03:13:21.0973662Z         },
2026-06-20T03:13:21.0973766Z         "impl": {
2026-06-20T03:13:21.0973887Z           "complete": true,
2026-06-20T03:13:21.0973996Z           "evidence": [
2026-06-20T03:13:21.0974100Z             {
2026-06-20T03:13:21.0974249Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-20T03:13:21.0974353Z               "line": 48
2026-06-20T03:13:21.0974459Z             },
2026-06-20T03:13:21.0974563Z             {
2026-06-20T03:13:21.0974706Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-20T03:13:21.0974817Z               "line": 55
2026-06-20T03:13:21.0974920Z             },
2026-06-20T03:13:21.0975020Z             {
2026-06-20T03:13:21.0975160Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-20T03:13:21.0975272Z               "line": 74
2026-06-20T03:13:21.0975377Z             },
2026-06-20T03:13:21.0975492Z             {
2026-06-20T03:13:21.0975634Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-20T03:13:21.0975740Z               "line": 91
2026-06-20T03:13:21.0975849Z             }
2026-06-20T03:13:21.0975949Z           ]
2026-06-20T03:13:21.0976055Z         },
2026-06-20T03:13:21.0976155Z         "int": {
2026-06-20T03:13:21.0976273Z           "complete": false,
2026-06-20T03:13:21.0976393Z           "evidence": []
2026-06-20T03:13:21.0976493Z         },
2026-06-20T03:13:21.0976597Z         "unit": {
2026-06-20T03:13:21.0976708Z           "complete": true,
2026-06-20T03:13:21.0976817Z           "evidence": [
2026-06-20T03:13:21.0976907Z             {
2026-06-20T03:13:21.0977047Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-20T03:13:21.0977165Z               "line": 149
2026-06-20T03:13:21.0977265Z             },
2026-06-20T03:13:21.0977475Z             {
2026-06-20T03:13:21.0977612Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-20T03:13:21.0977820Z               "line": 166
2026-06-20T03:13:21.0977915Z             },
2026-06-20T03:13:21.0978025Z             {
2026-06-20T03:13:21.0978158Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-20T03:13:21.0978273Z               "line": 176
2026-06-20T03:13:21.0978364Z             },
2026-06-20T03:13:21.0978468Z             {
2026-06-20T03:13:21.0978612Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-20T03:13:21.0978731Z               "line": 194
2026-06-20T03:13:21.0978835Z             },
2026-06-20T03:13:21.0979026Z             {
2026-06-20T03:13:21.0979169Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-20T03:13:21.0979285Z               "line": 207
2026-06-20T03:13:21.0979393Z             }
2026-06-20T03:13:21.0979498Z           ]
2026-06-20T03:13:21.0979600Z         }
2026-06-20T03:13:21.0979703Z       }
2026-06-20T03:13:21.0979813Z     },
2026-06-20T03:13:21.0979910Z     {
2026-06-20T03:13:21.0980056Z       "id": "REQ-HAZARD-ECHO-BEFORE-SIGNOFF",
2026-06-20T03:13:21.0980277Z       "title": "Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)",
2026-06-20T03:13:21.0980385Z       "requiredStages": [
2026-06-20T03:13:21.0980489Z         "impl",
2026-06-20T03:13:21.0980594Z         "unit"
2026-06-20T03:13:21.0980701Z       ],
2026-06-20T03:13:21.0980810Z       "stages": {
2026-06-20T03:13:21.0980912Z         "doc": {
2026-06-20T03:13:21.0981030Z           "complete": false,
2026-06-20T03:13:21.0981149Z           "evidence": []
2026-06-20T03:13:21.0981255Z         },
2026-06-20T03:13:21.0981355Z         "impl": {
2026-06-20T03:13:21.0981479Z           "complete": true,
2026-06-20T03:13:21.0981589Z           "evidence": [
2026-06-20T03:13:21.0981693Z             {
2026-06-20T03:13:21.0981847Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.0981960Z               "line": 466
2026-06-20T03:13:21.0982070Z             },
2026-06-20T03:13:21.0982167Z             {
2026-06-20T03:13:21.0982317Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-20T03:13:21.0982423Z               "line": 26
2026-06-20T03:13:21.0982524Z             }
2026-06-20T03:13:21.0982618Z           ]
2026-06-20T03:13:21.0982718Z         },
2026-06-20T03:13:21.0982825Z         "int": {
2026-06-20T03:13:21.0982937Z           "complete": false,
2026-06-20T03:13:21.0983041Z           "evidence": []
2026-06-20T03:13:21.0983142Z         },
2026-06-20T03:13:21.0983245Z         "unit": {
2026-06-20T03:13:21.0983358Z           "complete": true,
2026-06-20T03:13:21.0983469Z           "evidence": [
2026-06-20T03:13:21.0983579Z             {
2026-06-20T03:13:21.0983726Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-20T03:13:21.0983837Z               "line": 150
2026-06-20T03:13:21.0983936Z             },
2026-06-20T03:13:21.0984041Z             {
2026-06-20T03:13:21.0984184Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-20T03:13:21.0984307Z               "line": 208
2026-06-20T03:13:21.0984413Z             }
2026-06-20T03:13:21.0984522Z           ]
2026-06-20T03:13:21.0984627Z         }
2026-06-20T03:13:21.0984728Z       }
2026-06-20T03:13:21.0984837Z     },
2026-06-20T03:13:21.0984937Z     {
2026-06-20T03:13:21.0985086Z       "id": "REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE",
2026-06-20T03:13:21.0994262Z       "title": "The effect journal serializes EVERY PTY effect under one mutex held ACROSS two fsyncs AND the blocking PTY write — so interactive input stutters and ultimately wedges the daemon hard. ROOT (doyle /diagnose, code-grounded + MEASURED on the operator's real Windows box, 2026-06-19): EffectJournal::apply_once (effect.rs:168-188) takes `inner.lock()` and holds it across `write_line(PENDING)` → `effect()` → `write_line(DONE)`, where write_line (effect.rs:235-239) does flush()+sync_all() (a full FlushFileBuffers) — so each effect pays TWO fsyncs under a GLOBAL lock, and the closure `effect()` (the actual PTY write, broker.rs:1257 EffectKind::PtyWrite via attach.rs:197 send_effect) runs while the lock is held. Two operator-visible facets, ONE root: (A) STUTTER/LAG — every keystroke is a PtyWrite effect = 2× sync_all serialized; measured fsync on %LOCALAPPDATA%\\spt-core = median 6.5ms, spikes to 198ms (C: was recently at 100%), so ~13ms+ per keystroke best case, hundreds under contention → 'many but not all keypresses take 100s of ms, choppy, worsens with volume'. (B) HARD PERMANENT WEDGE — when a PtyWrite `effect()` blocks (ConPTY input buffer full / harness not draining stdin), the journal lock is held INDEFINITELY → the single-threaded inbound-stream dispatch (dispatch.rs serve_attach, which both applies input effects AND opens attaches) can never progress → EVERY subsequent attach (`spt rc --view`/`--take`) fails with 'attach request: brain IPC read deadline elapsed' (confirmed: two retries deadline identically; broker control-plane KIND queries still answer — different thread). This REFUTES the W2-deferred ruling that park-(b)/(c) is 'Windows-benign because ConPTY absorbs 4MiB' — on the real box the input path wedges regardless. DISTINCT from W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST = the OUTPUT drain, correctly fixed @8b5583e; output uses broker.rs:1106 append, NOT the fsync journal). This is the INPUT/effect-journal path W1 never touched, and it is THE wedge the operator hits with --take/--view. FIX DIRECTION (candidates, repro-first — extend inject_control_wedge.rs to a REAL backed-up-PTY-consumer + a real rc-client attach assertion, the gap W1's gate missed): (1) do NOT hold the journal lock across effect() — reserve the key + fsync PENDING under lock, RELEASE, run effect(), re-acquire to fsync DONE + mark applied (preserve crash-idempotency via the per-key reservation, not a global hold); (2) bound/fail-fast the PtyWrite itself (the W2-deferred park bound — write_input must never block indefinitely, DSR-answer must not hold the writer mutex across a blocking write); (3) drop per-keystroke fsync on the interactive path — PtyWrite effects are EPHEMERAL (a keystroke lost on a broker crash is retyped; PTY state is not reconstructed from keystroke replay), so in-memory applied-set dedup suffices (the broker survives the brain — that IS the dedup anchor), with async/batched fsync or no-fsync for EffectKind::PtyWrite while durable kinds (NetSend/NetDial/Registry/Spool) keep their fsync. Combine (1)+(3) at minimum. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-20T03:13:21.0994791Z       "requiredStages": [
2026-06-20T03:13:21.0994901Z         "impl",
2026-06-20T03:13:21.0995002Z         "unit",
2026-06-20T03:13:21.0995106Z         "int"
2026-06-20T03:13:21.0995211Z       ],
2026-06-20T03:13:21.0995317Z       "stages": {
2026-06-20T03:13:21.0995426Z         "doc": {
2026-06-20T03:13:21.0995545Z           "complete": false,
2026-06-20T03:13:21.0995660Z           "evidence": []
2026-06-20T03:13:21.0995759Z         },
2026-06-20T03:13:21.0995870Z         "impl": {
2026-06-20T03:13:21.0995980Z           "complete": true,
2026-06-20T03:13:21.0996103Z           "evidence": [
2026-06-20T03:13:21.0996214Z             {
2026-06-20T03:13:21.0996393Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-20T03:13:21.0996507Z               "line": 99
2026-06-20T03:13:21.0996603Z             },
2026-06-20T03:13:21.0996698Z             {
2026-06-20T03:13:21.0996850Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-20T03:13:21.0996956Z               "line": 201
2026-06-20T03:13:21.0997055Z             }
2026-06-20T03:13:21.0997151Z           ]
2026-06-20T03:13:21.0997257Z         },
2026-06-20T03:13:21.0997361Z         "int": {
2026-06-20T03:13:21.0997476Z           "complete": true,
2026-06-20T03:13:21.0997585Z           "evidence": [
2026-06-20T03:13:21.0997685Z             {
2026-06-20T03:13:21.0997867Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-20T03:13:21.0997971Z               "line": 682
2026-06-20T03:13:21.0998071Z             }
2026-06-20T03:13:21.0998253Z           ]
2026-06-20T03:13:21.0998353Z         },
2026-06-20T03:13:21.0998453Z         "unit": {
2026-06-20T03:13:21.0998657Z           "complete": true,
2026-06-20T03:13:21.0998766Z           "evidence": [
2026-06-20T03:13:21.0998871Z             {
2026-06-20T03:13:21.0999088Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-20T03:13:21.0999199Z               "line": 517
2026-06-20T03:13:21.0999303Z             },
2026-06-20T03:13:21.0999407Z             {
2026-06-20T03:13:21.0999551Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-20T03:13:21.0999669Z               "line": 576
2026-06-20T03:13:21.0999761Z             }
2026-06-20T03:13:21.0999861Z           ]
2026-06-20T03:13:21.0999951Z         }
2026-06-20T03:13:21.1000042Z       }
2026-06-20T03:13:21.1000152Z     },
2026-06-20T03:13:21.1000252Z     {
2026-06-20T03:13:21.1000405Z       "id": "REQ-HAZARD-ELEVATED-DAEMON-SPAWN",
2026-06-20T03:13:21.1001738Z       "title": "The daemon always runs unelevated in the invoking user's universe, regardless of which command spawns it: an elevated spawner de-elevates (Windows: UAC linked token via CreateProcessWithTokenW; Linux: drop to SUDO_UID/SUDO_GID + the invoker's HOME) — an elevated daemon's pipes deny unelevated clients (every later spt reads not-running→spawn→bind Access-denied) and a sudo'd daemon roots the user's state universe (5.7)",
2026-06-20T03:13:21.1001874Z       "requiredStages": [
2026-06-20T03:13:21.1001980Z         "doc",
2026-06-20T03:13:21.1002085Z         "impl",
2026-06-20T03:13:21.1002189Z         "unit"
2026-06-20T03:13:21.1002294Z       ],
2026-06-20T03:13:21.1002395Z       "stages": {
2026-06-20T03:13:21.1002503Z         "doc": {
2026-06-20T03:13:21.1002614Z           "complete": true,
2026-06-20T03:13:21.1002723Z           "evidence": [
2026-06-20T03:13:21.1002828Z             {
2026-06-20T03:13:21.1002967Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T03:13:21.1003071Z               "line": 214
2026-06-20T03:13:21.1003181Z             }
2026-06-20T03:13:21.1003301Z           ]
2026-06-20T03:13:21.1003395Z         },
2026-06-20T03:13:21.1003500Z         "impl": {
2026-06-20T03:13:21.1003635Z           "complete": true,
2026-06-20T03:13:21.1003757Z           "evidence": [
2026-06-20T03:13:21.1003844Z             {
2026-06-20T03:13:21.1003997Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.1004100Z               "line": 56
2026-06-20T03:13:21.1004195Z             },
2026-06-20T03:13:21.1004291Z             {
2026-06-20T03:13:21.1004436Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.1004546Z               "line": 580
2026-06-20T03:13:21.1004647Z             },
2026-06-20T03:13:21.1004746Z             {
2026-06-20T03:13:21.1004900Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T03:13:21.1005000Z               "line": 36
2026-06-20T03:13:21.1005113Z             },
2026-06-20T03:13:21.1005215Z             {
2026-06-20T03:13:21.1005366Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T03:13:21.1005476Z               "line": 59
2026-06-20T03:13:21.1005577Z             },
2026-06-20T03:13:21.1005676Z             {
2026-06-20T03:13:21.1005825Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T03:13:21.1005943Z               "line": 83
2026-06-20T03:13:21.1006048Z             },
2026-06-20T03:13:21.1006154Z             {
2026-06-20T03:13:21.1006305Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T03:13:21.1006411Z               "line": 140
2026-06-20T03:13:21.1006517Z             },
2026-06-20T03:13:21.1006629Z             {
2026-06-20T03:13:21.1006783Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T03:13:21.1006883Z               "line": 159
2026-06-20T03:13:21.1006991Z             },
2026-06-20T03:13:21.1007082Z             {
2026-06-20T03:13:21.1007235Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T03:13:21.1007353Z               "line": 384
2026-06-20T03:13:21.1007569Z             },
2026-06-20T03:13:21.1007673Z             {
2026-06-20T03:13:21.1007812Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T03:13:21.1008026Z               "line": 535
2026-06-20T03:13:21.1008127Z             },
2026-06-20T03:13:21.1008231Z             {
2026-06-20T03:13:21.1008379Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T03:13:21.1008489Z               "line": 581
2026-06-20T03:13:21.1008598Z             },
2026-06-20T03:13:21.1008704Z             {
2026-06-20T03:13:21.1008850Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T03:13:21.1009038Z               "line": 300
2026-06-20T03:13:21.1009137Z             },
2026-06-20T03:13:21.1009236Z             {
2026-06-20T03:13:21.1009365Z               "path": "crates/spt/src/main.rs",
2026-06-20T03:13:21.1009478Z               "line": 42
2026-06-20T03:13:21.1009581Z             }
2026-06-20T03:13:21.1009687Z           ]
2026-06-20T03:13:21.1009797Z         },
2026-06-20T03:13:21.1009905Z         "int": {
2026-06-20T03:13:21.1010026Z           "complete": false,
2026-06-20T03:13:21.1010140Z           "evidence": []
2026-06-20T03:13:21.1010249Z         },
2026-06-20T03:13:21.1010350Z         "unit": {
2026-06-20T03:13:21.1010473Z           "complete": true,
2026-06-20T03:13:21.1010588Z           "evidence": [
2026-06-20T03:13:21.1010684Z             {
2026-06-20T03:13:21.1010836Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T03:13:21.1010941Z               "line": 813
2026-06-20T03:13:21.1011050Z             },
2026-06-20T03:13:21.1011155Z             {
2026-06-20T03:13:21.1011309Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T03:13:21.1011427Z               "line": 854
2026-06-20T03:13:21.1011532Z             },
2026-06-20T03:13:21.1011642Z             {
2026-06-20T03:13:21.1011790Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T03:13:21.1011905Z               "line": 928
2026-06-20T03:13:21.1012005Z             }
2026-06-20T03:13:21.1012108Z           ]
2026-06-20T03:13:21.1012217Z         }
2026-06-20T03:13:21.1012322Z       }
2026-06-20T03:13:21.1012430Z     },
2026-06-20T03:13:21.1012535Z     {
2026-06-20T03:13:21.1012697Z       "id": "REQ-HAZARD-ENDPOINT-RUN-ATTACH-OUTPUT",
2026-06-20T03:13:21.1017627Z       "title": "A clean `spt rc` attach to a LIVE spt-hosted (`endpoint run`) harness must DELIVER the harness's PTY output. KEYSTONE — the operator's central 'attach shows no output' symptom, reproduced on the real dummy-harness fixture (v0.12.1 Wave 1) with NO death and NO wedge: bringup succeeds (online, harness pid alive + heartbeating, psyche hosted), the attach CONNECTS (PUMP_IPC_READER spawned, no RC_FAIL, holds the full window) — but receives EXACTLY 0 bytes over 10s of the harness's flushed [session.self] stdout. DISTINCT from REQ-HAZARD-VIEWER-CLOSE-DETACH (death) and REQ-HAZARD-ATTACH-WEDGE (dead-child backpressure): here the harness is ALIVE and the attach is a clean first subscribe. This BLOCKS the 'view is independent' invariant — re-attach is meaningless if a live endpoint-run harness shows nothing. KNOWN-GOOD (rules out 'no drain'): attach.rs `local_attach_via_loopback_conn_rides_the_same_pump` + `broker_spawns_the_pty_child_in_the_requested_cwd` prove the broker DOES drain+fan a `spawn_session` PTY child to a loopback attach over the SAME transport rc uses. Both spawn_session and endpoint-run's spawn_session_pid send KIND_SPAWN → the same dispatch_spawn (broker.rs:706/835) which starts the per-session drain+OutputLog — so the gap is NARROWER than 'no drain', endpoint-run-specific. Root candidates: (a) spawn_session_pid's SpawnReq stdio/env/cwd differs so the dummy's stdout isn't the captured ConPTY; (b) the harness stdout WRITE BLOCKS because the ConPTY buffer fills (drain not reading THIS pty) — explains alive-but-0-bytes; (c) ConPTY reader-park (KH 7.6) on this path; (d) `spt rc` resolve_session/subscribe for an endpoint-run session subscribes to the wrong/empty log. (v0.12.1)",
2026-06-20T03:13:21.1017961Z       "requiredStages": [
2026-06-20T03:13:21.1018058Z         "impl",
2026-06-20T03:13:21.1018261Z         "unit",
2026-06-20T03:13:21.1018368Z         "int"
2026-06-20T03:13:21.1018472Z       ],
2026-06-20T03:13:21.1018576Z       "stages": {
2026-06-20T03:13:21.1018683Z         "doc": {
2026-06-20T03:13:21.1018810Z           "complete": false,
2026-06-20T03:13:21.1018915Z           "evidence": []
2026-06-20T03:13:21.1019101Z         },
2026-06-20T03:13:21.1019206Z         "impl": {
2026-06-20T03:13:21.1019331Z           "complete": true,
2026-06-20T03:13:21.1019444Z           "evidence": [
2026-06-20T03:13:21.1019549Z             {
2026-06-20T03:13:21.1019702Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-20T03:13:21.1019811Z               "line": 106
2026-06-20T03:13:21.1019915Z             }
2026-06-20T03:13:21.1020015Z           ]
2026-06-20T03:13:21.1020123Z         },
2026-06-20T03:13:21.1020237Z         "int": {
2026-06-20T03:13:21.1020353Z           "complete": true,
2026-06-20T03:13:21.1020475Z           "evidence": [
2026-06-20T03:13:21.1020586Z             {
2026-06-20T03:13:21.1020762Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-20T03:13:21.1020862Z               "line": 296
2026-06-20T03:13:21.1020972Z             }
2026-06-20T03:13:21.1021081Z           ]
2026-06-20T03:13:21.1021182Z         },
2026-06-20T03:13:21.1021291Z         "unit": {
2026-06-20T03:13:21.1021400Z           "complete": true,
2026-06-20T03:13:21.1021516Z           "evidence": [
2026-06-20T03:13:21.1021620Z             {
2026-06-20T03:13:21.1021772Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T03:13:21.1021888Z               "line": 464
2026-06-20T03:13:21.1021992Z             }
2026-06-20T03:13:21.1022097Z           ]
2026-06-20T03:13:21.1022198Z         }
2026-06-20T03:13:21.1022302Z       }
2026-06-20T03:13:21.1022393Z     },
2026-06-20T03:13:21.1022485Z     {
2026-06-20T03:13:21.1022616Z       "id": "REQ-HAZARD-ENV-SUBST",
2026-06-20T03:13:21.1025976Z       "title": "`spt endpoint run` HONORS manifest [env.<VAR>] direction=inject values (with {key} substitution) on the spt-hosted spawn. Today only the [session.self] command ARGV is {id}-substituted; the [env] inject value is NEITHER substituted NOR applied — manifest.schema.json promises EnvVar.value = 'Value to inject (with substitution)' but prepare_harness_spawn fills only argv and SpawnReq carries no env, so a [env.SPT_ENDPOINT_ID].value='{id}' arrives EMPTY. A FLAGLESS harness (bare `claude`, no argv slot for {id}) then routes the id via [env] → empty → SessionStart sees empty $SPT_ENDPOINT_ID → seeds-by-PPID instead of binding → ZERO perch → NO_PERCH (the actual wall-b bind blocker; perri hard-repro'd). SILENT failure (empty inject, no error). FIX (doyle ruled a): fill every [env] inject value from the SAME {key} catalog as argv/role (mirror F-009 TEMPLATE fill, whole-string fill_template for an env value), thread it through SpawnReq.env → the broker sets it on the spawned PTY child. Correctness fix — schema already promises it, NO manifest change, NO new binary. PAIRS with REQ-SEND-SPT-HOSTED to make endpoint run fully work. doyle F-013. (post-v0.10.0)",
2026-06-20T03:13:21.1026172Z       "requiredStages": [
2026-06-20T03:13:21.1026282Z         "impl",
2026-06-20T03:13:21.1026387Z         "unit",
2026-06-20T03:13:21.1026496Z         "int"
2026-06-20T03:13:21.1026601Z       ],
2026-06-20T03:13:21.1026711Z       "stages": {
2026-06-20T03:13:21.1026821Z         "doc": {
2026-06-20T03:13:21.1026935Z           "complete": false,
2026-06-20T03:13:21.1027050Z           "evidence": []
2026-06-20T03:13:21.1027145Z         },
2026-06-20T03:13:21.1027255Z         "impl": {
2026-06-20T03:13:21.1027378Z           "complete": true,
2026-06-20T03:13:21.1027488Z           "evidence": [
2026-06-20T03:13:21.1027585Z             {
2026-06-20T03:13:21.1027741Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-20T03:13:21.1027856Z               "line": 123
2026-06-20T03:13:21.1028231Z             },
2026-06-20T03:13:21.1028342Z             {
2026-06-20T03:13:21.1028488Z               "path": "crates/spt-term/src/pty.rs",
2026-06-20T03:13:21.1028699Z               "line": 134
2026-06-20T03:13:21.1028807Z             }
2026-06-20T03:13:21.1028899Z           ]
2026-06-20T03:13:21.1029070Z         },
2026-06-20T03:13:21.1029170Z         "int": {
2026-06-20T03:13:21.1029285Z           "complete": true,
2026-06-20T03:13:21.1029399Z           "evidence": [
2026-06-20T03:13:21.1029500Z             {
2026-06-20T03:13:21.1029656Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-20T03:13:21.1029766Z               "line": 311
2026-06-20T03:13:21.1029872Z             },
2026-06-20T03:13:21.1029976Z             {
2026-06-20T03:13:21.1030124Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-20T03:13:21.1030230Z               "line": 507
2026-06-20T03:13:21.1030333Z             }
2026-06-20T03:13:21.1030442Z           ]
2026-06-20T03:13:21.1030543Z         },
2026-06-20T03:13:21.1030664Z         "unit": {
2026-06-20T03:13:21.1030788Z           "complete": true,
2026-06-20T03:13:21.1030909Z           "evidence": [
2026-06-20T03:13:21.1031021Z             {
2026-06-20T03:13:21.1031175Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-20T03:13:21.1031293Z               "line": 250
2026-06-20T03:13:21.1031388Z             }
2026-06-20T03:13:21.1031495Z           ]
2026-06-20T03:13:21.1031599Z         }
2026-06-20T03:13:21.1031703Z       }
2026-06-20T03:13:21.1031810Z     },
2026-06-20T03:13:21.1031905Z     {
2026-06-20T03:13:21.1032047Z       "id": "REQ-HAZARD-ENVELOPE-CR-LINESAFE",
2026-06-20T03:13:21.1033785Z       "title": "Envelope CR-linesafety (4.1): the line-framed EVENT codec must neutralize raw carriage returns — `event_body_escape` folds CRLF/lone-CR to the codec's representable linebreak (`\\n`→`<br>`) BEFORE framing, so a body carrying `\\r` (Windows `echo`/CRLF text crossing nodes) cannot survive into the single-line envelope and trigger a receiver terminal CR→col0 overwrite that corrupts the frame. Robustness on unrepresentable input, NOT a wire-format change (decoder untouched, amp-last invariant held). Belt-and-suspenders: `spt send`/`ring` also trim stdin (parity with `notify`).",
2026-06-20T03:13:21.1033950Z       "requiredStages": [
2026-06-20T03:13:21.1034056Z         "impl",
2026-06-20T03:13:21.1034160Z         "unit"
2026-06-20T03:13:21.1034275Z       ],
2026-06-20T03:13:21.1034380Z       "stages": {
2026-06-20T03:13:21.1034494Z         "doc": {
2026-06-20T03:13:21.1034614Z           "complete": false,
2026-06-20T03:13:21.1034714Z           "evidence": []
2026-06-20T03:13:21.1034814Z         },
2026-06-20T03:13:21.1034914Z         "impl": {
2026-06-20T03:13:21.1035020Z           "complete": true,
2026-06-20T03:13:21.1035133Z           "evidence": [
2026-06-20T03:13:21.1035239Z             {
2026-06-20T03:13:21.1035400Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-20T03:13:21.1035510Z               "line": 31
2026-06-20T03:13:21.1035645Z             }
2026-06-20T03:13:21.1035738Z           ]
2026-06-20T03:13:21.1035847Z         },
2026-06-20T03:13:21.1035953Z         "int": {
2026-06-20T03:13:21.1036065Z           "complete": false,
2026-06-20T03:13:21.1036183Z           "evidence": []
2026-06-20T03:13:21.1036289Z         },
2026-06-20T03:13:21.1036398Z         "unit": {
2026-06-20T03:13:21.1036513Z           "complete": true,
2026-06-20T03:13:21.1036628Z           "evidence": [
2026-06-20T03:13:21.1036727Z             {
2026-06-20T03:13:21.1036871Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-20T03:13:21.1036985Z               "line": 181
2026-06-20T03:13:21.1037085Z             }
2026-06-20T03:13:21.1037196Z           ]
2026-06-20T03:13:21.1037300Z         }
2026-06-20T03:13:21.1037404Z       }
2026-06-20T03:13:21.1037510Z     },
2026-06-20T03:13:21.1037619Z     {
2026-06-20T03:13:21.1037771Z       "id": "REQ-HAZARD-ENVELOPE-DECODE-ORDER",
2026-06-20T03:13:21.1037962Z       "title": "Envelope decode order, ampersand decoded last (4.1)",
2026-06-20T03:13:21.1038216Z       "requiredStages": [
2026-06-20T03:13:21.1038406Z         "impl",
2026-06-20T03:13:21.1038512Z         "unit"
2026-06-20T03:13:21.1038615Z       ],
2026-06-20T03:13:21.1038733Z       "stages": {
2026-06-20T03:13:21.1038844Z         "doc": {
2026-06-20T03:13:21.1039034Z           "complete": false,
2026-06-20T03:13:21.1039154Z           "evidence": []
2026-06-20T03:13:21.1039259Z         },
2026-06-20T03:13:21.1039363Z         "impl": {
2026-06-20T03:13:21.1039483Z           "complete": true,
2026-06-20T03:13:21.1039593Z           "evidence": [
2026-06-20T03:13:21.1039697Z             {
2026-06-20T03:13:21.1039841Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-20T03:13:21.1039959Z               "line": 49
2026-06-20T03:13:21.1040055Z             },
2026-06-20T03:13:21.1040160Z             {
2026-06-20T03:13:21.1040307Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-20T03:13:21.1040414Z               "line": 81
2026-06-20T03:13:21.1040531Z             }
2026-06-20T03:13:21.1040631Z           ]
2026-06-20T03:13:21.1040747Z         },
2026-06-20T03:13:21.1040851Z         "int": {
2026-06-20T03:13:21.1040969Z           "complete": false,
2026-06-20T03:13:21.1041079Z           "evidence": []
2026-06-20T03:13:21.1041177Z         },
2026-06-20T03:13:21.1041291Z         "unit": {
2026-06-20T03:13:21.1041401Z           "complete": true,
2026-06-20T03:13:21.1041506Z           "evidence": [
2026-06-20T03:13:21.1041610Z             {
2026-06-20T03:13:21.1041759Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-20T03:13:21.1041877Z               "line": 156
2026-06-20T03:13:21.1041983Z             },
2026-06-20T03:13:21.1042088Z             {
2026-06-20T03:13:21.1042235Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-20T03:13:21.1042350Z               "line": 173
2026-06-20T03:13:21.1042445Z             },
2026-06-20T03:13:21.1042554Z             {
2026-06-20T03:13:21.1042703Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-20T03:13:21.1042822Z               "line": 196
2026-06-20T03:13:21.1042932Z             }
2026-06-20T03:13:21.1043042Z           ]
2026-06-20T03:13:21.1043146Z         }
2026-06-20T03:13:21.1043252Z       }
2026-06-20T03:13:21.1043361Z     },
2026-06-20T03:13:21.1043461Z     {
2026-06-20T03:13:21.1043614Z       "id": "REQ-HAZARD-ENVELOPE-PARSER-SAFE",
2026-06-20T03:13:21.1043822Z       "title": "Two-slice envelope parser is panic-free and tolerant (4.2)",
2026-06-20T03:13:21.1043941Z       "requiredStages": [
2026-06-20T03:13:21.1044040Z         "impl",
2026-06-20T03:13:21.1044139Z         "unit"
2026-06-20T03:13:21.1044244Z       ],
2026-06-20T03:13:21.1044340Z       "stages": {
2026-06-20T03:13:21.1044449Z         "doc": {
2026-06-20T03:13:21.1044574Z           "complete": false,
2026-06-20T03:13:21.1044684Z           "evidence": []
2026-06-20T03:13:21.1044787Z         },
2026-06-20T03:13:21.1044893Z         "impl": {
2026-06-20T03:13:21.1045027Z           "complete": true,
2026-06-20T03:13:21.1045140Z           "evidence": [
2026-06-20T03:13:21.1045237Z             {
2026-06-20T03:13:21.1045393Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-20T03:13:21.1045499Z               "line": 120
2026-06-20T03:13:21.1045608Z             }
2026-06-20T03:13:21.1045708Z           ]
2026-06-20T03:13:21.1045809Z         },
2026-06-20T03:13:21.1045905Z         "int": {
2026-06-20T03:13:21.1046018Z           "complete": false,
2026-06-20T03:13:21.1046129Z           "evidence": []
2026-06-20T03:13:21.1046229Z         },
2026-06-20T03:13:21.1046336Z         "unit": {
2026-06-20T03:13:21.1046446Z           "complete": true,
2026-06-20T03:13:21.1046560Z           "evidence": [
2026-06-20T03:13:21.1046663Z             {
2026-06-20T03:13:21.1046806Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-20T03:13:21.1046926Z               "line": 212
2026-06-20T03:13:21.1047030Z             },
2026-06-20T03:13:21.1047136Z             {
2026-06-20T03:13:21.1047392Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-20T03:13:21.1047507Z               "line": 221
2026-06-20T03:13:21.1047697Z             },
2026-06-20T03:13:21.1047813Z             {
2026-06-20T03:13:21.1047964Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-20T03:13:21.1048066Z               "line": 229
2026-06-20T03:13:21.1048175Z             },
2026-06-20T03:13:21.1048279Z             {
2026-06-20T03:13:21.1048429Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-20T03:13:21.1048536Z               "line": 239
2026-06-20T03:13:21.1048637Z             },
2026-06-20T03:13:21.1048744Z             {
2026-06-20T03:13:21.1048895Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-20T03:13:21.1049092Z               "line": 249
2026-06-20T03:13:21.1049189Z             }
2026-06-20T03:13:21.1049293Z           ]
2026-06-20T03:13:21.1049400Z         }
2026-06-20T03:13:21.1049504Z       }
2026-06-20T03:13:21.1049608Z     },
2026-06-20T03:13:21.1049715Z     {
2026-06-20T03:13:21.1049856Z       "id": "REQ-HAZARD-EPHEMERAL-CLEANUP",
2026-06-20T03:13:21.1050048Z       "title": "Ephemeral perch cleanup on every ring exit path (3.1)",
2026-06-20T03:13:21.1050171Z       "requiredStages": [
2026-06-20T03:13:21.1050282Z         "impl",
2026-06-20T03:13:21.1050382Z         "unit"
2026-06-20T03:13:21.1050486Z       ],
2026-06-20T03:13:21.1050581Z       "stages": {
2026-06-20T03:13:21.1050692Z         "doc": {
2026-06-20T03:13:21.1050811Z           "complete": false,
2026-06-20T03:13:21.1050916Z           "evidence": []
2026-06-20T03:13:21.1051021Z         },
2026-06-20T03:13:21.1051134Z         "impl": {
2026-06-20T03:13:21.1051255Z           "complete": true,
2026-06-20T03:13:21.1051354Z           "evidence": [
2026-06-20T03:13:21.1051468Z             {
2026-06-20T03:13:21.1051606Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-20T03:13:21.1051719Z               "line": 14
2026-06-20T03:13:21.1051822Z             },
2026-06-20T03:13:21.1051928Z             {
2026-06-20T03:13:21.1052071Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-20T03:13:21.1052165Z               "line": 63
2026-06-20T03:13:21.1052262Z             }
2026-06-20T03:13:21.1052357Z           ]
2026-06-20T03:13:21.1052471Z         },
2026-06-20T03:13:21.1052577Z         "int": {
2026-06-20T03:13:21.1052700Z           "complete": false,
2026-06-20T03:13:21.1052814Z           "evidence": []
2026-06-20T03:13:21.1052911Z         },
2026-06-20T03:13:21.1053020Z         "unit": {
2026-06-20T03:13:21.1053134Z           "complete": true,
2026-06-20T03:13:21.1055982Z           "evidence": [
2026-06-20T03:13:21.1056107Z             {
2026-06-20T03:13:21.1056268Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-20T03:13:21.1056389Z               "line": 164
2026-06-20T03:13:21.1056498Z             },
2026-06-20T03:13:21.1056602Z             {
2026-06-20T03:13:21.1056737Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-20T03:13:21.1056850Z               "line": 198
2026-06-20T03:13:21.1056973Z             },
2026-06-20T03:13:21.1057082Z             {
2026-06-20T03:13:21.1057237Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-20T03:13:21.1057348Z               "line": 220
2026-06-20T03:13:21.1057453Z             }
2026-06-20T03:13:21.1057552Z           ]
2026-06-20T03:13:21.1057662Z         }
2026-06-20T03:13:21.1057758Z       }
2026-06-20T03:13:21.1057867Z     },
2026-06-20T03:13:21.1057972Z     {
2026-06-20T03:13:21.1058101Z       "id": "REQ-HAZARD-EPOCH-RESET",
2026-06-20T03:13:21.1059594Z       "title": "Advertisement-epoch reset strands a node: peers' higher last-seen epoch drops the reset node's fresh advertisements as Stale until the counter outruns history. Common case (full reinstall/re-pair) is mitigated by REQ-SUBNET-7's ceremony eviction (peer-side epoch memory dies with the deleted row — acceptance-verified); the residual narrow slice (epoch file lost, identity kept) is documented, guard deferred to a field hit (4.11)",
2026-06-20T03:13:21.1059868Z       "requiredStages": [],
2026-06-20T03:13:21.1059979Z       "stages": {
2026-06-20T03:13:21.1060183Z         "doc": {
2026-06-20T03:13:21.1060303Z           "complete": true,
2026-06-20T03:13:21.1060412Z           "evidence": [
2026-06-20T03:13:21.1060512Z             {
2026-06-20T03:13:21.1060656Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T03:13:21.1060765Z               "line": 165
2026-06-20T03:13:21.1060871Z             }
2026-06-20T03:13:21.1060975Z           ]
2026-06-20T03:13:21.1061074Z         },
2026-06-20T03:13:21.1061186Z         "impl": {
2026-06-20T03:13:21.1061304Z           "complete": false,
2026-06-20T03:13:21.1061423Z           "evidence": []
2026-06-20T03:13:21.1061529Z         },
2026-06-20T03:13:21.1061637Z         "int": {
2026-06-20T03:13:21.1061747Z           "complete": false,
2026-06-20T03:13:21.1061849Z           "evidence": []
2026-06-20T03:13:21.1061961Z         },
2026-06-20T03:13:21.1062066Z         "unit": {
2026-06-20T03:13:21.1062195Z           "complete": false,
2026-06-20T03:13:21.1062307Z           "evidence": []
2026-06-20T03:13:21.1062401Z         }
2026-06-20T03:13:21.1062498Z       }
2026-06-20T03:13:21.1062598Z     },
2026-06-20T03:13:21.1062707Z     {
2026-06-20T03:13:21.1062856Z       "id": "REQ-HAZARD-EVENTPART-REASSEMBLY",
2026-06-20T03:13:21.1063099Z       "title": "EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently",
2026-06-20T03:13:21.1063223Z       "requiredStages": [
2026-06-20T03:13:21.1063332Z         "impl",
2026-06-20T03:13:21.1063438Z         "unit"
2026-06-20T03:13:21.1063542Z       ],
2026-06-20T03:13:21.1063656Z       "stages": {
2026-06-20T03:13:21.1063757Z         "doc": {
2026-06-20T03:13:21.1063875Z           "complete": false,
2026-06-20T03:13:21.1063980Z           "evidence": []
2026-06-20T03:13:21.1064087Z         },
2026-06-20T03:13:21.1064200Z         "impl": {
2026-06-20T03:13:21.1064319Z           "complete": true,
2026-06-20T03:13:21.1064439Z           "evidence": [
2026-06-20T03:13:21.1064547Z             {
2026-06-20T03:13:21.1064697Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-20T03:13:21.1064820Z               "line": 76
2026-06-20T03:13:21.1064924Z             },
2026-06-20T03:13:21.1065028Z             {
2026-06-20T03:13:21.1065169Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-20T03:13:21.1065288Z               "line": 167
2026-06-20T03:13:21.1065394Z             },
2026-06-20T03:13:21.1065503Z             {
2026-06-20T03:13:21.1065651Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-20T03:13:21.1065756Z               "line": 233
2026-06-20T03:13:21.1065865Z             },
2026-06-20T03:13:21.1065970Z             {
2026-06-20T03:13:21.1066104Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-20T03:13:21.1066208Z               "line": 272
2026-06-20T03:13:21.1066314Z             }
2026-06-20T03:13:21.1066414Z           ]
2026-06-20T03:13:21.1066519Z         },
2026-06-20T03:13:21.1066629Z         "int": {
2026-06-20T03:13:21.1066757Z           "complete": false,
2026-06-20T03:13:21.1066876Z           "evidence": []
2026-06-20T03:13:21.1066982Z         },
2026-06-20T03:13:21.1067095Z         "unit": {
2026-06-20T03:13:21.1067205Z           "complete": true,
2026-06-20T03:13:21.1067307Z           "evidence": [
2026-06-20T03:13:21.1067405Z             {
2026-06-20T03:13:21.1067547Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-20T03:13:21.1067647Z               "line": 321
2026-06-20T03:13:21.1067750Z             },
2026-06-20T03:13:21.1067850Z             {
2026-06-20T03:13:21.1067999Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-20T03:13:21.1068103Z               "line": 329
2026-06-20T03:13:21.1068208Z             },
2026-06-20T03:13:21.1068304Z             {
2026-06-20T03:13:21.1068451Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-20T03:13:21.1068557Z               "line": 356
2026-06-20T03:13:21.1068666Z             },
2026-06-20T03:13:21.1068761Z             {
2026-06-20T03:13:21.1069052Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-20T03:13:21.1069176Z               "line": 395
2026-06-20T03:13:21.1069372Z             },
2026-06-20T03:13:21.1069472Z             {
2026-06-20T03:13:21.1069605Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-20T03:13:21.1069710Z               "line": 406
2026-06-20T03:13:21.1069811Z             },
2026-06-20T03:13:21.1069916Z             {
2026-06-20T03:13:21.1070058Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-20T03:13:21.1070169Z               "line": 418
2026-06-20T03:13:21.1070268Z             },
2026-06-20T03:13:21.1070367Z             {
2026-06-20T03:13:21.1070496Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-20T03:13:21.1070606Z               "line": 442
2026-06-20T03:13:21.1070705Z             }
2026-06-20T03:13:21.1070811Z           ]
2026-06-20T03:13:21.1070906Z         }
2026-06-20T03:13:21.1071005Z       }
2026-06-20T03:13:21.1071107Z     },
2026-06-20T03:13:21.1071221Z     {
2026-06-20T03:13:21.1071349Z       "id": "REQ-HAZARD-GEN-START-NOW",
2026-06-20T03:13:21.1071517Z       "title": "gen_start = now() on cold-start and handoff (2.4)",
2026-06-20T03:13:21.1071644Z       "requiredStages": [
2026-06-20T03:13:21.1071746Z         "impl",
2026-06-20T03:13:21.1071851Z         "int"
2026-06-20T03:13:21.1071950Z       ],
2026-06-20T03:13:21.1072056Z       "stages": {
2026-06-20T03:13:21.1072170Z         "doc": {
2026-06-20T03:13:21.1072284Z           "complete": false,
2026-06-20T03:13:21.1072399Z           "evidence": []
2026-06-20T03:13:21.1072503Z         },
2026-06-20T03:13:21.1072607Z         "impl": {
2026-06-20T03:13:21.1072726Z           "complete": true,
2026-06-20T03:13:21.1072835Z           "evidence": [
2026-06-20T03:13:21.1072943Z             {
2026-06-20T03:13:21.1073082Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T03:13:21.1073187Z               "line": 22
2026-06-20T03:13:21.1073291Z             }
2026-06-20T03:13:21.1073397Z           ]
2026-06-20T03:13:21.1073502Z         },
2026-06-20T03:13:21.1073606Z         "int": {
2026-06-20T03:13:21.1073726Z           "complete": true,
2026-06-20T03:13:21.1073835Z           "evidence": [
2026-06-20T03:13:21.1073940Z             {
2026-06-20T03:13:21.1074088Z               "path": "crates/spt-daemon/tests/handoff.rs",
2026-06-20T03:13:21.1074192Z               "line": 18
2026-06-20T03:13:21.1074293Z             }
2026-06-20T03:13:21.1074398Z           ]
2026-06-20T03:13:21.1074498Z         },
2026-06-20T03:13:21.1074598Z         "unit": {
2026-06-20T03:13:21.1074722Z           "complete": false,
2026-06-20T03:13:21.1074836Z           "evidence": []
2026-06-20T03:13:21.1074942Z         }
2026-06-20T03:13:21.1075042Z       }
2026-06-20T03:13:21.1075146Z     },
2026-06-20T03:13:21.1075252Z     {
2026-06-20T03:13:21.1075389Z       "id": "REQ-HAZARD-GRACE-BEFORE-SIGNOFF",
2026-06-20T03:13:21.1075612Z       "title": "Grace-period wait completes before composing INIT_SIGNOFF (1.1)",
2026-06-20T03:13:21.1075734Z       "requiredStages": [
2026-06-20T03:13:21.1075848Z         "impl",
2026-06-20T03:13:21.1075954Z         "unit"
2026-06-20T03:13:21.1076068Z       ],
2026-06-20T03:13:21.1076177Z       "stages": {
2026-06-20T03:13:21.1076279Z         "doc": {
2026-06-20T03:13:21.1076392Z           "complete": false,
2026-06-20T03:13:21.1076501Z           "evidence": []
2026-06-20T03:13:21.1076608Z         },
2026-06-20T03:13:21.1076707Z         "impl": {
2026-06-20T03:13:21.1076831Z           "complete": true,
2026-06-20T03:13:21.1076936Z           "evidence": [
2026-06-20T03:13:21.1077041Z             {
2026-06-20T03:13:21.1077194Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.1077303Z               "line": 465
2026-06-20T03:13:21.1077408Z             },
2026-06-20T03:13:21.1077509Z             {
2026-06-20T03:13:21.1077665Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-20T03:13:21.1077770Z               "line": 27
2026-06-20T03:13:21.1077862Z             }
2026-06-20T03:13:21.1078088Z           ]
2026-06-20T03:13:21.1078194Z         },
2026-06-20T03:13:21.1078296Z         "int": {
2026-06-20T03:13:21.1078482Z           "complete": false,
2026-06-20T03:13:21.1078588Z           "evidence": []
2026-06-20T03:13:21.1078697Z         },
2026-06-20T03:13:21.1078797Z         "unit": {
2026-06-20T03:13:21.1078907Z           "complete": true,
2026-06-20T03:13:21.1079088Z           "evidence": [
2026-06-20T03:13:21.1079193Z             {
2026-06-20T03:13:21.1079335Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.1079442Z               "line": 990
2026-06-20T03:13:21.1079545Z             },
2026-06-20T03:13:21.1079650Z             {
2026-06-20T03:13:21.1079785Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-20T03:13:21.1079889Z               "line": 181
2026-06-20T03:13:21.1080008Z             }
2026-06-20T03:13:21.1080114Z           ]
2026-06-20T03:13:21.1080208Z         }
2026-06-20T03:13:21.1080308Z       }
2026-06-20T03:13:21.1080410Z     },
2026-06-20T03:13:21.1080513Z     {
2026-06-20T03:13:21.1080652Z       "id": "REQ-HAZARD-HANDOFF-ARGV-COMPAT",
2026-06-20T03:13:21.1080847Z       "title": "Broker/brain IPC + handoff argv version-tolerant (2.3)",
2026-06-20T03:13:21.1080960Z       "requiredStages": [
2026-06-20T03:13:21.1081066Z         "impl",
2026-06-20T03:13:21.1081171Z         "unit"
2026-06-20T03:13:21.1081270Z       ],
2026-06-20T03:13:21.1081381Z       "stages": {
2026-06-20T03:13:21.1081481Z         "doc": {
2026-06-20T03:13:21.1081604Z           "complete": false,
2026-06-20T03:13:21.1081705Z           "evidence": []
2026-06-20T03:13:21.1081800Z         },
2026-06-20T03:13:21.1081900Z         "impl": {
2026-06-20T03:13:21.1082015Z           "complete": true,
2026-06-20T03:13:21.1082124Z           "evidence": [
2026-06-20T03:13:21.1082219Z             {
2026-06-20T03:13:21.1082368Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.1082477Z               "line": 73
2026-06-20T03:13:21.1082587Z             },
2026-06-20T03:13:21.1082697Z             {
2026-06-20T03:13:21.1082835Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.1082965Z               "line": 972
2026-06-20T03:13:21.1083063Z             },
2026-06-20T03:13:21.1083172Z             {
2026-06-20T03:13:21.1083315Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-20T03:13:21.1083423Z               "line": 20
2026-06-20T03:13:21.1083527Z             },
2026-06-20T03:13:21.1083623Z             {
2026-06-20T03:13:21.1083766Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-20T03:13:21.1083875Z               "line": 100
2026-06-20T03:13:21.1083981Z             },
2026-06-20T03:13:21.1084086Z             {
2026-06-20T03:13:21.1084224Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-20T03:13:21.1084334Z               "line": 585
2026-06-20T03:13:21.1084433Z             },
2026-06-20T03:13:21.1084539Z             {
2026-06-20T03:13:21.1084681Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-20T03:13:21.1084790Z               "line": 68
2026-06-20T03:13:21.1084911Z             },
2026-06-20T03:13:21.1085001Z             {
2026-06-20T03:13:21.1085154Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-20T03:13:21.1085264Z               "line": 80
2026-06-20T03:13:21.1085368Z             }
2026-06-20T03:13:21.1085473Z           ]
2026-06-20T03:13:21.1085579Z         },
2026-06-20T03:13:21.1085692Z         "int": {
2026-06-20T03:13:21.1085798Z           "complete": true,
2026-06-20T03:13:21.1085903Z           "evidence": [
2026-06-20T03:13:21.1086006Z             {
2026-06-20T03:13:21.1086149Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-20T03:13:21.1086253Z               "line": 44
2026-06-20T03:13:21.1086361Z             }
2026-06-20T03:13:21.1086471Z           ]
2026-06-20T03:13:21.1086567Z         },
2026-06-20T03:13:21.1086670Z         "unit": {
2026-06-20T03:13:21.1086786Z           "complete": true,
2026-06-20T03:13:21.1087004Z           "evidence": [
2026-06-20T03:13:21.1087111Z             {
2026-06-20T03:13:21.1087254Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.1087459Z               "line": 1181
2026-06-20T03:13:21.1087562Z             },
2026-06-20T03:13:21.1087667Z             {
2026-06-20T03:13:21.1087816Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.1087935Z               "line": 1197
2026-06-20T03:13:21.1088040Z             },
2026-06-20T03:13:21.1088141Z             {
2026-06-20T03:13:21.1088292Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.1088408Z               "line": 2197
2026-06-20T03:13:21.1088502Z             },
2026-06-20T03:13:21.1088606Z             {
2026-06-20T03:13:21.1088749Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-20T03:13:21.1088847Z               "line": 152
2026-06-20T03:13:21.1089019Z             },
2026-06-20T03:13:21.1089119Z             {
2026-06-20T03:13:21.1089261Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-20T03:13:21.1089377Z               "line": 175
2026-06-20T03:13:21.1089472Z             },
2026-06-20T03:13:21.1089571Z             {
2026-06-20T03:13:21.1089711Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-20T03:13:21.1089834Z               "line": 186
2026-06-20T03:13:21.1089934Z             },
2026-06-20T03:13:21.1090040Z             {
2026-06-20T03:13:21.1090182Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-20T03:13:21.1090292Z               "line": 202
2026-06-20T03:13:21.1090397Z             },
2026-06-20T03:13:21.1090501Z             {
2026-06-20T03:13:21.1090636Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-20T03:13:21.1090744Z               "line": 216
2026-06-20T03:13:21.1090844Z             },
2026-06-20T03:13:21.1090946Z             {
2026-06-20T03:13:21.1091092Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-20T03:13:21.1091207Z               "line": 137
2026-06-20T03:13:21.1091314Z             },
2026-06-20T03:13:21.1091411Z             {
2026-06-20T03:13:21.1091539Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1091655Z               "line": 8152
2026-06-20T03:13:21.1091759Z             },
2026-06-20T03:13:21.1091864Z             {
2026-06-20T03:13:21.1092003Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-20T03:13:21.1092121Z               "line": 30
2026-06-20T03:13:21.1092222Z             },
2026-06-20T03:13:21.1092317Z             {
2026-06-20T03:13:21.1092450Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-20T03:13:21.1092561Z               "line": 73
2026-06-20T03:13:21.1092666Z             }
2026-06-20T03:13:21.1092770Z           ]
2026-06-20T03:13:21.1092876Z         }
2026-06-20T03:13:21.1092975Z       }
2026-06-20T03:13:21.1093080Z     },
2026-06-20T03:13:21.1093181Z     {
2026-06-20T03:13:21.1093332Z       "id": "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE",
2026-06-20T03:13:21.1097375Z       "title": "B2 KEYSTONE: a daemon-hosted (spt-hosted) endpoint's info.json status is RECONCILED to real liveness, not left latched online. The broker exit-waiter (broker.rs:889-910) reaps its in-mem session table + emits ExitEvent but NEVER touches info.json; lifecycle::mark_offline only fires on Psyche teardown — so a dead/exited harness (operator closed the tab) stays status=online forever (is_perch_alive returns ONLINE for daemon-hosted, liveness.rs:80-93). FIX (doyle ruled PULL-PRIMARY — the live-status analog of REQ-HAZARD-ROSTER-GHOST): the livehost reconcile loop (reconcile_once livehost.rs:226-313) queries the broker's live session set (KIND_SESSIONS) each tick and, for any status=online live_agent perch PAST the boot grace whose endpoint has NO live broker session, marks it offline (lifecycle::mark_offline → status=offline → is_perch_alive=false). GATED on spt-hosted (controllable==Some(true)) so a HARNESS-HOSTED relay live agent (api listen, legitimately online with no broker session) is NEVER mis-marked. Crash-robust + self-healing on the next tick (clear-on-event is not crash-robust alone). PUSH (brain ExitEvent→mark_offline) is an OPTIONAL fast-path only if the daemon brain is reliably subscribed to all hosted sessions; correctness rides the pull. Broker stays stateless (ADR-0004 §B — brain owns the info.json write). (v0.12.0)",
2026-06-20T03:13:21.1097747Z       "requiredStages": [
2026-06-20T03:13:21.1097851Z         "impl",
2026-06-20T03:13:21.1097956Z         "unit",
2026-06-20T03:13:21.1098062Z         "int"
2026-06-20T03:13:21.1098162Z       ],
2026-06-20T03:13:21.1098276Z       "stages": {
2026-06-20T03:13:21.1098381Z         "doc": {
2026-06-20T03:13:21.1098505Z           "complete": false,
2026-06-20T03:13:21.1098605Z           "evidence": []
2026-06-20T03:13:21.1098715Z         },
2026-06-20T03:13:21.1098814Z         "impl": {
2026-06-20T03:13:21.1098930Z           "complete": true,
2026-06-20T03:13:21.1099123Z           "evidence": [
2026-06-20T03:13:21.1099223Z             {
2026-06-20T03:13:21.1099399Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.1099507Z               "line": 510
2026-06-20T03:13:21.1099631Z             },
2026-06-20T03:13:21.1099737Z             {
2026-06-20T03:13:21.1099884Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.1099994Z               "line": 704
2026-06-20T03:13:21.1100098Z             }
2026-06-20T03:13:21.1100203Z           ]
2026-06-20T03:13:21.1100309Z         },
2026-06-20T03:13:21.1100409Z         "int": {
2026-06-20T03:13:21.1100518Z           "complete": true,
2026-06-20T03:13:21.1100633Z           "evidence": [
2026-06-20T03:13:21.1100733Z             {
2026-06-20T03:13:21.1100881Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.1100995Z               "line": 1119
2026-06-20T03:13:21.1101095Z             },
2026-06-20T03:13:21.1101201Z             {
2026-06-20T03:13:21.1101357Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-20T03:13:21.1101477Z               "line": 312
2026-06-20T03:13:21.1101578Z             }
2026-06-20T03:13:21.1101681Z           ]
2026-06-20T03:13:21.1101797Z         },
2026-06-20T03:13:21.1101893Z         "unit": {
2026-06-20T03:13:21.1102000Z           "complete": true,
2026-06-20T03:13:21.1102109Z           "evidence": [
2026-06-20T03:13:21.1102211Z             {
2026-06-20T03:13:21.1102362Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.1102468Z               "line": 821
2026-06-20T03:13:21.1102572Z             }
2026-06-20T03:13:21.1102672Z           ]
2026-06-20T03:13:21.1102773Z         }
2026-06-20T03:13:21.1102882Z       }
2026-06-20T03:13:21.1102977Z     },
2026-06-20T03:13:21.1103083Z     {
2026-06-20T03:13:21.1103211Z       "id": "REQ-HAZARD-ID-CHARSET",
2026-06-20T03:13:21.1103517Z       "title": "Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)",
2026-06-20T03:13:21.1103640Z       "requiredStages": [
2026-06-20T03:13:21.1103746Z         "impl",
2026-06-20T03:13:21.1103855Z         "unit"
2026-06-20T03:13:21.1103959Z       ],
2026-06-20T03:13:21.1104075Z       "stages": {
2026-06-20T03:13:21.1104184Z         "doc": {
2026-06-20T03:13:21.1104307Z           "complete": true,
2026-06-20T03:13:21.1104417Z           "evidence": [
2026-06-20T03:13:21.1104524Z             {
2026-06-20T03:13:21.1104657Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T03:13:21.1104767Z               "line": 133
2026-06-20T03:13:21.1104872Z             }
2026-06-20T03:13:21.1104976Z           ]
2026-06-20T03:13:21.1105082Z         },
2026-06-20T03:13:21.1105187Z         "impl": {
2026-06-20T03:13:21.1105310Z           "complete": true,
2026-06-20T03:13:21.1105416Z           "evidence": [
2026-06-20T03:13:21.1105520Z             {
2026-06-20T03:13:21.1105669Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-20T03:13:21.1105778Z               "line": 65
2026-06-20T03:13:21.1105882Z             },
2026-06-20T03:13:21.1105988Z             {
2026-06-20T03:13:21.1106245Z               "path": "crates/spt-proto/src/id.rs",
2026-06-20T03:13:21.1106365Z               "line": 17
2026-06-20T03:13:21.1106579Z             },
2026-06-20T03:13:21.1106690Z             {
2026-06-20T03:13:21.1106837Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-20T03:13:21.1106957Z               "line": 146
2026-06-20T03:13:21.1107056Z             },
2026-06-20T03:13:21.1107160Z             {
2026-06-20T03:13:21.1107313Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.1107420Z               "line": 310
2026-06-20T03:13:21.1107524Z             },
2026-06-20T03:13:21.1107630Z             {
2026-06-20T03:13:21.1107777Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.1107882Z               "line": 441
2026-06-20T03:13:21.1107988Z             },
2026-06-20T03:13:21.1108092Z             {
2026-06-20T03:13:21.1108226Z               "path": "crates/spt/src/api/worker.rs",
2026-06-20T03:13:21.1108336Z               "line": 32
2026-06-20T03:13:21.1108440Z             },
2026-06-20T03:13:21.1108545Z             {
2026-06-20T03:13:21.1108688Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1108797Z               "line": 1283
2026-06-20T03:13:21.1108899Z             },
2026-06-20T03:13:21.1109074Z             {
2026-06-20T03:13:21.1109214Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1109336Z               "line": 6161
2026-06-20T03:13:21.1109441Z             },
2026-06-20T03:13:21.1109548Z             {
2026-06-20T03:13:21.1109670Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1109783Z               "line": 6443
2026-06-20T03:13:21.1109888Z             }
2026-06-20T03:13:21.1109991Z           ]
2026-06-20T03:13:21.1110096Z         },
2026-06-20T03:13:21.1110201Z         "int": {
2026-06-20T03:13:21.1110325Z           "complete": false,
2026-06-20T03:13:21.1110435Z           "evidence": []
2026-06-20T03:13:21.1110536Z         },
2026-06-20T03:13:21.1110640Z         "unit": {
2026-06-20T03:13:21.1110768Z           "complete": true,
2026-06-20T03:13:21.1110888Z           "evidence": [
2026-06-20T03:13:21.1110992Z             {
2026-06-20T03:13:21.1111136Z               "path": "crates/spt-proto/src/id.rs",
2026-06-20T03:13:21.1111245Z               "line": 94
2026-06-20T03:13:21.1111354Z             },
2026-06-20T03:13:21.1111451Z             {
2026-06-20T03:13:21.1111589Z               "path": "crates/spt-proto/src/id.rs",
2026-06-20T03:13:21.1111693Z               "line": 111
2026-06-20T03:13:21.1111794Z             },
2026-06-20T03:13:21.1111903Z             {
2026-06-20T03:13:21.1112037Z               "path": "crates/spt-proto/src/id.rs",
2026-06-20T03:13:21.1112147Z               "line": 124
2026-06-20T03:13:21.1112251Z             },
2026-06-20T03:13:21.1112357Z             {
2026-06-20T03:13:21.1112495Z               "path": "crates/spt-proto/src/id.rs",
2026-06-20T03:13:21.1112608Z               "line": 134
2026-06-20T03:13:21.1112718Z             },
2026-06-20T03:13:21.1112824Z             {
2026-06-20T03:13:21.1112970Z               "path": "crates/spt-proto/src/id.rs",
2026-06-20T03:13:21.1113086Z               "line": 144
2026-06-20T03:13:21.1113195Z             },
2026-06-20T03:13:21.1113294Z             {
2026-06-20T03:13:21.1113434Z               "path": "crates/spt-proto/src/id.rs",
2026-06-20T03:13:21.1113547Z               "line": 156
2026-06-20T03:13:21.1113652Z             },
2026-06-20T03:13:21.1113753Z             {
2026-06-20T03:13:21.1113914Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T03:13:21.1114020Z               "line": 746
2026-06-20T03:13:21.1114124Z             },
2026-06-20T03:13:21.1114238Z             {
2026-06-20T03:13:21.1114387Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-20T03:13:21.1114506Z               "line": 309
2026-06-20T03:13:21.1114621Z             }
2026-06-20T03:13:21.1114726Z           ]
2026-06-20T03:13:21.1114834Z         }
2026-06-20T03:13:21.1114934Z       }
2026-06-20T03:13:21.1115146Z     },
2026-06-20T03:13:21.1115256Z     {
2026-06-20T03:13:21.1115386Z       "id": "REQ-HAZARD-INBOX-NO-DOUBLE",
2026-06-20T03:13:21.1115653Z       "title": "No double-delivery via legacy inbox (4.5)",
2026-06-20T03:13:21.1115771Z       "requiredStages": [
2026-06-20T03:13:21.1115885Z         "impl",
2026-06-20T03:13:21.1115986Z         "unit"
2026-06-20T03:13:21.1116100Z       ],
2026-06-20T03:13:21.1116215Z       "stages": {
2026-06-20T03:13:21.1116310Z         "doc": {
2026-06-20T03:13:21.1116424Z           "complete": false,
2026-06-20T03:13:21.1116539Z           "evidence": []
2026-06-20T03:13:21.1116644Z         },
2026-06-20T03:13:21.1116767Z         "impl": {
2026-06-20T03:13:21.1116883Z           "complete": true,
2026-06-20T03:13:21.1116987Z           "evidence": [
2026-06-20T03:13:21.1117096Z             {
2026-06-20T03:13:21.1117245Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-20T03:13:21.1117348Z               "line": 128
2026-06-20T03:13:21.1117454Z             }
2026-06-20T03:13:21.1117565Z           ]
2026-06-20T03:13:21.1117668Z         },
2026-06-20T03:13:21.1117776Z         "int": {
2026-06-20T03:13:21.1117906Z           "complete": false,
2026-06-20T03:13:21.1118008Z           "evidence": []
2026-06-20T03:13:21.1118108Z         },
2026-06-20T03:13:21.1118219Z         "unit": {
2026-06-20T03:13:21.1118328Z           "complete": true,
2026-06-20T03:13:21.1118437Z           "evidence": [
2026-06-20T03:13:21.1118557Z             {
2026-06-20T03:13:21.1118695Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-20T03:13:21.1118811Z               "line": 205
2026-06-20T03:13:21.1118910Z             }
2026-06-20T03:13:21.1119096Z           ]
2026-06-20T03:13:21.1119196Z         }
2026-06-20T03:13:21.1119291Z       }
2026-06-20T03:13:21.1119401Z     },
2026-06-20T03:13:21.1119497Z     {
2026-06-20T03:13:21.1119644Z       "id": "REQ-HAZARD-INFO-JSON-TORN-READ",
2026-06-20T03:13:21.1119817Z       "title": "State-file reads tolerate concurrent writes (1.2)",
2026-06-20T03:13:21.1119949Z       "requiredStages": [
2026-06-20T03:13:21.1120051Z         "impl",
2026-06-20T03:13:21.1120160Z         "unit"
2026-06-20T03:13:21.1120263Z       ],
2026-06-20T03:13:21.1120372Z       "stages": {
2026-06-20T03:13:21.1120477Z         "doc": {
2026-06-20T03:13:21.1120590Z           "complete": false,
2026-06-20T03:13:21.1120699Z           "evidence": []
2026-06-20T03:13:21.1120800Z         },
2026-06-20T03:13:21.1120904Z         "impl": {
2026-06-20T03:13:21.1121019Z           "complete": true,
2026-06-20T03:13:21.1121124Z           "evidence": [
2026-06-20T03:13:21.1121233Z             {
2026-06-20T03:13:21.1121378Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T03:13:21.1121496Z               "line": 367
2026-06-20T03:13:21.1121595Z             },
2026-06-20T03:13:21.1121702Z             {
2026-06-20T03:13:21.1121849Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T03:13:21.1121953Z               "line": 378
2026-06-20T03:13:21.1122063Z             },
2026-06-20T03:13:21.1122158Z             {
2026-06-20T03:13:21.1122297Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T03:13:21.1122416Z               "line": 396
2026-06-20T03:13:21.1122516Z             }
2026-06-20T03:13:21.1122627Z           ]
2026-06-20T03:13:21.1122721Z         },
2026-06-20T03:13:21.1122831Z         "int": {
2026-06-20T03:13:21.1122946Z           "complete": false,
2026-06-20T03:13:21.1123055Z           "evidence": []
2026-06-20T03:13:21.1123159Z         },
2026-06-20T03:13:21.1123258Z         "unit": {
2026-06-20T03:13:21.1123374Z           "complete": true,
2026-06-20T03:13:21.1123483Z           "evidence": [
2026-06-20T03:13:21.1123593Z             {
2026-06-20T03:13:21.1123727Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T03:13:21.1123849Z               "line": 420
2026-06-20T03:13:21.1123951Z             },
2026-06-20T03:13:21.1124061Z             {
2026-06-20T03:13:21.1124198Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T03:13:21.1124418Z               "line": 441
2026-06-20T03:13:21.1124527Z             },
2026-06-20T03:13:21.1124713Z             {
2026-06-20T03:13:21.1124852Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T03:13:21.1124967Z               "line": 811
2026-06-20T03:13:21.1125071Z             },
2026-06-20T03:13:21.1125181Z             {
2026-06-20T03:13:21.1125309Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T03:13:21.1125427Z               "line": 822
2026-06-20T03:13:21.1125523Z             },
2026-06-20T03:13:21.1125631Z             {
2026-06-20T03:13:21.1125763Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T03:13:21.1125883Z               "line": 835
2026-06-20T03:13:21.1125988Z             }
2026-06-20T03:13:21.1126092Z           ]
2026-06-20T03:13:21.1126193Z         }
2026-06-20T03:13:21.1126293Z       }
2026-06-20T03:13:21.1126402Z     },
2026-06-20T03:13:21.1126503Z     {
2026-06-20T03:13:21.1126660Z       "id": "REQ-HAZARD-INJECT-CONTROL-COEXIST",
2026-06-20T03:13:21.1134225Z       "title": "SPINE INVARIANT (v0.13.0 keystone): the broker must accept INJECTED keystrokes into an spt-hosted PTY (the v0.11.0 raw direct-inject today; the ADR-0022 translation-binary choreography tomorrow) WHILE a live `spt rc` controller is attached to the SAME PTY, without (a) the operator losing control, (b) the endpoint latching ONLINE+CONTROLLED, or (c) the broker wedging. The injection inlet is PERMANENT — spt-claude-code requires keystroke injection — so this is root-caused + fixed at the PTY-injection layer, IN STEP with the ADR-0022 delivery redesign that formalizes the inlet. REOPENS the wedge facet of REQ-HAZARD-ATTACH-WEDGE: the v0.12.1 prove-don't-change covered only DEAD-CHILD backpressure, NOT the injection trigger (operator's signal — one injected keystroke succeeds, the next wedges → the single-threaded broker parks on a blocking PTY/loopback write after injection-induced harness output). REPRO-FIRST on the real dummy-harness fixture (NO theory): instrument to nail the exact blocking call before any fix. Fix candidates: non-blocking/fail-fast PTY write, split input/output, bounded-evicting. Mechanism shared with W2 — spt-core owns EVERY PTY write and applies an injected sequence ATOMICALLY (controller input buffered during the sequence, flushed after) so a stash/restore can't be clobbered. CONFIRMED ROOT (doyle /diagnose 2026-06-19, code-grounded): Broker::append (broker.rs:205-227) fans each live output chunk to the CONTROLLER on a SYNCHRONOUS BLOCKING write_frame held inline in the session's drain thread (the 'authoritative, advances delivered_through' path, D4-1), while VIEWERS use a dedicated writer thread + bounded evicting sync_channel (add_viewer:273 / viewer_writer) that can never stall the drain. So a slow/backed-up controller socket — or the full 64KB loopback duplex (the ATTACH-WEDGE buffer) — BLOCKS the drain thread → output stalls → keystroke echoes stall (PERCEIVED input lag) → unrecoverable wedge when the consumer never drains. TRIGGERS ON NORMAL INTERACTIVE rc USE under heavy harness output (TUI redraw), NOT only message injection — same root, wider repro. FIX DIRECTION: move controller delivery off the drain thread onto a dedicated writer (the viewer_writer pattern) BUT preserve the authoritative cursor — block the WRITER thread (not the drain), bound the wedge (deadline → detach/mark-gone, never park forever), never silently evict the operator's authoritative view. (v0.13.0)",
2026-06-20T03:13:21.1134478Z       "requiredStages": [
2026-06-20T03:13:21.1134587Z         "impl",
2026-06-20T03:13:21.1134696Z         "unit",
2026-06-20T03:13:21.1134797Z         "int"
2026-06-20T03:13:21.1134902Z       ],
2026-06-20T03:13:21.1135011Z       "stages": {
2026-06-20T03:13:21.1135117Z         "doc": {
2026-06-20T03:13:21.1135235Z           "complete": false,
2026-06-20T03:13:21.1135350Z           "evidence": []
2026-06-20T03:13:21.1135451Z         },
2026-06-20T03:13:21.1135564Z         "impl": {
2026-06-20T03:13:21.1135674Z           "complete": true,
2026-06-20T03:13:21.1135922Z           "evidence": [
2026-06-20T03:13:21.1136025Z             {
2026-06-20T03:13:21.1136304Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.1136420Z               "line": 296
2026-06-20T03:13:21.1136520Z             },
2026-06-20T03:13:21.1136628Z             {
2026-06-20T03:13:21.1136778Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.1136887Z               "line": 702
2026-06-20T03:13:21.1136991Z             },
2026-06-20T03:13:21.1137097Z             {
2026-06-20T03:13:21.1137249Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.1137360Z               "line": 940
2026-06-20T03:13:21.1137464Z             }
2026-06-20T03:13:21.1137568Z           ]
2026-06-20T03:13:21.1137664Z         },
2026-06-20T03:13:21.1137773Z         "int": {
2026-06-20T03:13:21.1137893Z           "complete": true,
2026-06-20T03:13:21.1137999Z           "evidence": [
2026-06-20T03:13:21.1138102Z             {
2026-06-20T03:13:21.1138289Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-20T03:13:21.1138399Z               "line": 222
2026-06-20T03:13:21.1138503Z             },
2026-06-20T03:13:21.1138604Z             {
2026-06-20T03:13:21.1138779Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-20T03:13:21.1138883Z               "line": 348
2026-06-20T03:13:21.1139068Z             }
2026-06-20T03:13:21.1139167Z           ]
2026-06-20T03:13:21.1139267Z         },
2026-06-20T03:13:21.1139377Z         "unit": {
2026-06-20T03:13:21.1139482Z           "complete": true,
2026-06-20T03:13:21.1139592Z           "evidence": [
2026-06-20T03:13:21.1139692Z             {
2026-06-20T03:13:21.1139834Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.1139955Z               "line": 2225
2026-06-20T03:13:21.1140055Z             },
2026-06-20T03:13:21.1140168Z             {
2026-06-20T03:13:21.1140312Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.1140431Z               "line": 2283
2026-06-20T03:13:21.1140526Z             }
2026-06-20T03:13:21.1140632Z           ]
2026-06-20T03:13:21.1140741Z         }
2026-06-20T03:13:21.1140841Z       }
2026-06-20T03:13:21.1140942Z     },
2026-06-20T03:13:21.1141045Z     {
2026-06-20T03:13:21.1141186Z       "id": "REQ-HAZARD-INSTANT-UNDERFLOW",
2026-06-20T03:13:21.1141791Z       "title": "Scheduling never subtracts a Duration from Instant::now() (underflow-panics on a host booted more recently than the offset); 'due now / never run' is Option<Instant>=None gated on forward duration_since only (5.9)",
2026-06-20T03:13:21.1141911Z       "requiredStages": [
2026-06-20T03:13:21.1142020Z         "impl",
2026-06-20T03:13:21.1142115Z         "unit"
2026-06-20T03:13:21.1142221Z       ],
2026-06-20T03:13:21.1142326Z       "stages": {
2026-06-20T03:13:21.1142430Z         "doc": {
2026-06-20T03:13:21.1142550Z           "complete": false,
2026-06-20T03:13:21.1142659Z           "evidence": []
2026-06-20T03:13:21.1142769Z         },
2026-06-20T03:13:21.1142869Z         "impl": {
2026-06-20T03:13:21.1142993Z           "complete": true,
2026-06-20T03:13:21.1143118Z           "evidence": [
2026-06-20T03:13:21.1143217Z             {
2026-06-20T03:13:21.1143374Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T03:13:21.1143485Z               "line": 759
2026-06-20T03:13:21.1143588Z             }
2026-06-20T03:13:21.1143689Z           ]
2026-06-20T03:13:21.1143795Z         },
2026-06-20T03:13:21.1143898Z         "int": {
2026-06-20T03:13:21.1144019Z           "complete": false,
2026-06-20T03:13:21.1144129Z           "evidence": []
2026-06-20T03:13:21.1144232Z         },
2026-06-20T03:13:21.1144331Z         "unit": {
2026-06-20T03:13:21.1144447Z           "complete": true,
2026-06-20T03:13:21.1144560Z           "evidence": [
2026-06-20T03:13:21.1144670Z             {
2026-06-20T03:13:21.1144818Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T03:13:21.1145038Z               "line": 873
2026-06-20T03:13:21.1145142Z             }
2026-06-20T03:13:21.1145251Z           ]
2026-06-20T03:13:21.1145462Z         }
2026-06-20T03:13:21.1145566Z       }
2026-06-20T03:13:21.1148588Z     },
2026-06-20T03:13:21.1148725Z     {
2026-06-20T03:13:21.1148903Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-LIVENESS-GATE",
2026-06-20T03:13:21.1151436Z       "title": "B5: `spt daemon start` does NOT revive phantom Psyches for dead-but-online-latched perches. Today reconcile_once (livehost.rs:285) spawns a Psyche per status=online live_agent perch at boot WITHOUT verifying the harness child / {id}-psyche is actually alive — so a Cold start after an unclean stop revives N psyches for N dead-but-latched perches (3 psyches for 3 dead perches). FIX: gate the boot psyche-spawn on real child-liveness — a perch with NO live broker session (the B2 reconcile signal) is marked OFFLINE at boot instead of hosted, so a dead-harness perch is never revived. Shares the B2 reconcile loop (this is its boot-gate arm); composes with B2's honest latch. Also closes wall-a's psyche_host_error gap (residency-confirm does not run at boot tick-1, livehost.rs:395-441 / 257-263). (v0.12.0)",
2026-06-20T03:13:21.1151620Z       "requiredStages": [
2026-06-20T03:13:21.1151726Z         "impl",
2026-06-20T03:13:21.1151826Z         "unit",
2026-06-20T03:13:21.1151930Z         "int"
2026-06-20T03:13:21.1152034Z       ],
2026-06-20T03:13:21.1152139Z       "stages": {
2026-06-20T03:13:21.1152247Z         "doc": {
2026-06-20T03:13:21.1152365Z           "complete": false,
2026-06-20T03:13:21.1152486Z           "evidence": []
2026-06-20T03:13:21.1152585Z         },
2026-06-20T03:13:21.1152690Z         "impl": {
2026-06-20T03:13:21.1152815Z           "complete": true,
2026-06-20T03:13:21.1152909Z           "evidence": [
2026-06-20T03:13:21.1153004Z             {
2026-06-20T03:13:21.1153167Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.1153276Z               "line": 705
2026-06-20T03:13:21.1153377Z             }
2026-06-20T03:13:21.1153482Z           ]
2026-06-20T03:13:21.1153577Z         },
2026-06-20T03:13:21.1153678Z         "int": {
2026-06-20T03:13:21.1153810Z           "complete": true,
2026-06-20T03:13:21.1153910Z           "evidence": [
2026-06-20T03:13:21.1154017Z             {
2026-06-20T03:13:21.1154188Z               "path": "crates/spt/tests/livehost_bootgate_e2e.rs",
2026-06-20T03:13:21.1154298Z               "line": 24
2026-06-20T03:13:21.1154407Z             }
2026-06-20T03:13:21.1154507Z           ]
2026-06-20T03:13:21.1154603Z         },
2026-06-20T03:13:21.1154708Z         "unit": {
2026-06-20T03:13:21.1154830Z           "complete": true,
2026-06-20T03:13:21.1154939Z           "evidence": [
2026-06-20T03:13:21.1155045Z             {
2026-06-20T03:13:21.1155201Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.1155307Z               "line": 918
2026-06-20T03:13:21.1155413Z             }
2026-06-20T03:13:21.1155516Z           ]
2026-06-20T03:13:21.1155622Z         }
2026-06-20T03:13:21.1155727Z       }
2026-06-20T03:13:21.1155831Z     },
2026-06-20T03:13:21.1155937Z     {
2026-06-20T03:13:21.1156085Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-RACE",
2026-06-20T03:13:21.1159763Z       "title": "The brain's daemon-hosted Psyche lifecycle surfaces a host-FAILURE on the live perch (harness-diagnosable) and runs net-INDEPENDENTLY. When reconcile_once→host_one→spawn_psyche fails for a state=live_agent+status=online endpoint (e.g. the adapter's psyche binary absent from its install dir, REQ-INSTALL-11), the failure MUST be written to the perch info.json as a CURRENT-STATE field (reason + ts + attempt count; overwritten each 5s retry, CLEARED on successful host) and surfaced by `spt endpoint list`/status — never left as an eprintln on the brain's invisible stderr where a harness reading only perch state is blind. status=online stays authoritative (agent reachable; only the Psyche is missing — brain-restart rehydrate legitimately has online-without-Psyche windows), so this is a SEPARATE psyche-host-health field, never a status de-stamp. Net-independence is a locked-in invariant: spawn_live_host (brainproc.rs:230) reaches the reconcile and hosts the Psyche on a net-less/unpaired/peer-pump-STALLED node, proven by a REAL detached-daemon E2E (real broker→brain-child, real api seed+listen, real install-dir psyche binary). spt-core SURFACES the failure; the adapter owns fixing its packaging.",
2026-06-20T03:13:21.1160165Z       "requiredStages": [
2026-06-20T03:13:21.1160269Z         "impl",
2026-06-20T03:13:21.1160379Z         "unit",
2026-06-20T03:13:21.1160489Z         "int"
2026-06-20T03:13:21.1160588Z       ],
2026-06-20T03:13:21.1160698Z       "stages": {
2026-06-20T03:13:21.1160798Z         "doc": {
2026-06-20T03:13:21.1160926Z           "complete": false,
2026-06-20T03:13:21.1161037Z           "evidence": []
2026-06-20T03:13:21.1161137Z         },
2026-06-20T03:13:21.1161241Z         "impl": {
2026-06-20T03:13:21.1161366Z           "complete": true,
2026-06-20T03:13:21.1161465Z           "evidence": [
2026-06-20T03:13:21.1161585Z             {
2026-06-20T03:13:21.1161733Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.1161866Z               "line": 391
2026-06-20T03:13:21.1161967Z             },
2026-06-20T03:13:21.1162062Z             {
2026-06-20T03:13:21.1162200Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T03:13:21.1162315Z               "line": 343
2026-06-20T03:13:21.1162415Z             },
2026-06-20T03:13:21.1162518Z             {
2026-06-20T03:13:21.1162642Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1162750Z               "line": 1750
2026-06-20T03:13:21.1162859Z             },
2026-06-20T03:13:21.1162964Z             {
2026-06-20T03:13:21.1163089Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1163202Z               "line": 3191
2026-06-20T03:13:21.1163308Z             }
2026-06-20T03:13:21.1163408Z           ]
2026-06-20T03:13:21.1163503Z         },
2026-06-20T03:13:21.1163604Z         "int": {
2026-06-20T03:13:21.1163727Z           "complete": true,
2026-06-20T03:13:21.1163841Z           "evidence": [
2026-06-20T03:13:21.1163938Z             {
2026-06-20T03:13:21.1164113Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-20T03:13:21.1164218Z               "line": 353
2026-06-20T03:13:21.1164323Z             },
2026-06-20T03:13:21.1164423Z             {
2026-06-20T03:13:21.1164601Z               "path": "crates/spt/tests/livehost_psyche_fail_e2e.rs",
2026-06-20T03:13:21.1164714Z               "line": 23
2026-06-20T03:13:21.1164814Z             }
2026-06-20T03:13:21.1164916Z           ]
2026-06-20T03:13:21.1165019Z         },
2026-06-20T03:13:21.1165129Z         "unit": {
2026-06-20T03:13:21.1165244Z           "complete": true,
2026-06-20T03:13:21.1165347Z           "evidence": [
2026-06-20T03:13:21.1165461Z             {
2026-06-20T03:13:21.1165596Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T03:13:21.1165710Z               "line": 743
2026-06-20T03:13:21.1165814Z             },
2026-06-20T03:13:21.1165920Z             {
2026-06-20T03:13:21.1166053Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1166173Z               "line": 7863
2026-06-20T03:13:21.1166277Z             }
2026-06-20T03:13:21.1166382Z           ]
2026-06-20T03:13:21.1166488Z         }
2026-06-20T03:13:21.1166588Z       }
2026-06-20T03:13:21.1166687Z     },
2026-06-20T03:13:21.1166783Z     {
2026-06-20T03:13:21.1166930Z       "id": "REQ-HAZARD-LIVEHOST-NONRESIDENT",
2026-06-20T03:13:21.1170333Z       "title": "A daemon-hosted Psyche that spawns then EXITS IMMEDIATELY is a host failure, surfaced like a spawn failure (closes the v0.8.1 residual masking): the REQ-HAZARD-LIVEHOST-BOOT-RACE signal stamps `psyche_host_error` only when `spawn_psyche` returns Err, NOT when the detached spawn() returns Ok but the child dies within moments (e.g. a bad-argv child exiting 2 — the F-009 case). That leaves the residual 'online + no Psyche + no cause' gap: the nested `{id}-psyche` info.json is written status=online with a real-but-DEAD pid and the PARENT perch carries NO psyche_host_error (perri's F-010: tasklist showed 0 host procs across the window while info.json read online). The host MUST confirm RESIDENCY — a hosted child not alive (or whose `{id}-psyche` perch never re-registers / has a dead pid) within N seconds of spawn is treated as a host failure: stamp the parent perch `psyche_host_error{reason:\"host not resident within <n>s (psyche perch missing/dead pid)\"}` (and do not leave a phantom online nested perch). Closes the last masking gap the v0.8.1 fix left open. perri's F-010 (v0.8.1 dogfood). Sibling of REQ-HAZARD-LIVEHOST-BOOT-RACE.",
2026-06-20T03:13:21.1170688Z       "requiredStages": [
2026-06-20T03:13:21.1170796Z         "impl",
2026-06-20T03:13:21.1170905Z         "unit",
2026-06-20T03:13:21.1171011Z         "int"
2026-06-20T03:13:21.1171115Z       ],
2026-06-20T03:13:21.1171220Z       "stages": {
2026-06-20T03:13:21.1171326Z         "doc": {
2026-06-20T03:13:21.1171463Z           "complete": false,
2026-06-20T03:13:21.1171568Z           "evidence": []
2026-06-20T03:13:21.1171692Z         },
2026-06-20T03:13:21.1171796Z         "impl": {
2026-06-20T03:13:21.1171917Z           "complete": true,
2026-06-20T03:13:21.1172021Z           "evidence": [
2026-06-20T03:13:21.1172125Z             {
2026-06-20T03:13:21.1172275Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.1172387Z               "line": 64
2026-06-20T03:13:21.1172493Z             },
2026-06-20T03:13:21.1172604Z             {
2026-06-20T03:13:21.1172750Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.1172857Z               "line": 78
2026-06-20T03:13:21.1172957Z             },
2026-06-20T03:13:21.1173059Z             {
2026-06-20T03:13:21.1173207Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.1173325Z               "line": 170
2026-06-20T03:13:21.1173429Z             },
2026-06-20T03:13:21.1173534Z             {
2026-06-20T03:13:21.1173686Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.1173791Z               "line": 185
2026-06-20T03:13:21.1173901Z             },
2026-06-20T03:13:21.1174006Z             {
2026-06-20T03:13:21.1174149Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.1174259Z               "line": 195
2026-06-20T03:13:21.1174363Z             },
2026-06-20T03:13:21.1174469Z             {
2026-06-20T03:13:21.1174611Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.1174726Z               "line": 205
2026-06-20T03:13:21.1174832Z             },
2026-06-20T03:13:21.1174936Z             {
2026-06-20T03:13:21.1175089Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.1175198Z               "line": 294
2026-06-20T03:13:21.1175303Z             },
2026-06-20T03:13:21.1175409Z             {
2026-06-20T03:13:21.1175550Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.1175665Z               "line": 308
2026-06-20T03:13:21.1175776Z             },
2026-06-20T03:13:21.1175875Z             {
2026-06-20T03:13:21.1176026Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.1176147Z               "line": 377
2026-06-20T03:13:21.1176246Z             },
2026-06-20T03:13:21.1176365Z             {
2026-06-20T03:13:21.1176509Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.1176623Z               "line": 437
2026-06-20T03:13:21.1176734Z             },
2026-06-20T03:13:21.1176833Z             {
2026-06-20T03:13:21.1176985Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.1177095Z               "line": 455
2026-06-20T03:13:21.1177200Z             }
2026-06-20T03:13:21.1177299Z           ]
2026-06-20T03:13:21.1177406Z         },
2026-06-20T03:13:21.1177500Z         "int": {
2026-06-20T03:13:21.1177609Z           "complete": true,
2026-06-20T03:13:21.1177730Z           "evidence": [
2026-06-20T03:13:21.1177896Z             {
2026-06-20T03:13:21.1178068Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-20T03:13:21.1178252Z               "line": 45
2026-06-20T03:13:21.1178357Z             },
2026-06-20T03:13:21.1178465Z             {
2026-06-20T03:13:21.1178627Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-20T03:13:21.1178742Z               "line": 354
2026-06-20T03:13:21.1178841Z             },
2026-06-20T03:13:21.1179028Z             {
2026-06-20T03:13:21.1179189Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-20T03:13:21.1179291Z               "line": 31
2026-06-20T03:13:21.1179395Z             }
2026-06-20T03:13:21.1179499Z           ]
2026-06-20T03:13:21.1179601Z         },
2026-06-20T03:13:21.1179705Z         "unit": {
2026-06-20T03:13:21.1179823Z           "complete": true,
2026-06-20T03:13:21.1179939Z           "evidence": [
2026-06-20T03:13:21.1180043Z             {
2026-06-20T03:13:21.1180196Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.1180306Z               "line": 727
2026-06-20T03:13:21.1180420Z             }
2026-06-20T03:13:21.1180521Z           ]
2026-06-20T03:13:21.1180630Z         }
2026-06-20T03:13:21.1180734Z       }
2026-06-20T03:13:21.1180836Z     },
2026-06-20T03:13:21.1180931Z     {
2026-06-20T03:13:21.1181062Z       "id": "REQ-HAZARD-LOCAL-API-AUTH",
2026-06-20T03:13:21.1181304Z       "title": "Every local `api` mutation authenticated to an endpoint/session (codex #13)",
2026-06-20T03:13:21.1181412Z       "requiredStages": [
2026-06-20T03:13:21.1181523Z         "impl",
2026-06-20T03:13:21.1181628Z         "unit"
2026-06-20T03:13:21.1181732Z       ],
2026-06-20T03:13:21.1181838Z       "stages": {
2026-06-20T03:13:21.1181943Z         "doc": {
2026-06-20T03:13:21.1182065Z           "complete": false,
2026-06-20T03:13:21.1182176Z           "evidence": []
2026-06-20T03:13:21.1182281Z         },
2026-06-20T03:13:21.1182385Z         "impl": {
2026-06-20T03:13:21.1182505Z           "complete": true,
2026-06-20T03:13:21.1182610Z           "evidence": [
2026-06-20T03:13:21.1182714Z             {
2026-06-20T03:13:21.1182863Z               "path": "crates/spt/src/api/auth.rs",
2026-06-20T03:13:21.1182967Z               "line": 14
2026-06-20T03:13:21.1183087Z             },
2026-06-20T03:13:21.1183197Z             {
2026-06-20T03:13:21.1183334Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T03:13:21.1183455Z               "line": 566
2026-06-20T03:13:21.1183554Z             }
2026-06-20T03:13:21.1183658Z           ]
2026-06-20T03:13:21.1183763Z         },
2026-06-20T03:13:21.1183867Z         "int": {
2026-06-20T03:13:21.1183984Z           "complete": false,
2026-06-20T03:13:21.1184089Z           "evidence": []
2026-06-20T03:13:21.1184196Z         },
2026-06-20T03:13:21.1184299Z         "unit": {
2026-06-20T03:13:21.1184414Z           "complete": true,
2026-06-20T03:13:21.1184519Z           "evidence": [
2026-06-20T03:13:21.1184618Z             {
2026-06-20T03:13:21.1184758Z               "path": "crates/spt/src/api/auth.rs",
2026-06-20T03:13:21.1184867Z               "line": 130
2026-06-20T03:13:21.1184971Z             },
2026-06-20T03:13:21.1185072Z             {
2026-06-20T03:13:21.1185206Z               "path": "crates/spt/src/api/auth.rs",
2026-06-20T03:13:21.1185315Z               "line": 138
2026-06-20T03:13:21.1185421Z             },
2026-06-20T03:13:21.1185525Z             {
2026-06-20T03:13:21.1185659Z               "path": "crates/spt/src/api/auth.rs",
2026-06-20T03:13:21.1185764Z               "line": 146
2026-06-20T03:13:21.1185863Z             },
2026-06-20T03:13:21.1185974Z             {
2026-06-20T03:13:21.1186107Z               "path": "crates/spt/src/api/auth.rs",
2026-06-20T03:13:21.1186225Z               "line": 154
2026-06-20T03:13:21.1186336Z             },
2026-06-20T03:13:21.1186440Z             {
2026-06-20T03:13:21.1186577Z               "path": "crates/spt/src/api/auth.rs",
2026-06-20T03:13:21.1186688Z               "line": 162
2026-06-20T03:13:21.1186925Z             },
2026-06-20T03:13:21.1187026Z             {
2026-06-20T03:13:21.1187168Z               "path": "crates/spt/src/api/auth.rs",
2026-06-20T03:13:21.1187374Z               "line": 170
2026-06-20T03:13:21.1187478Z             }
2026-06-20T03:13:21.1187584Z           ]
2026-06-20T03:13:21.1187688Z         }
2026-06-20T03:13:21.1187793Z       }
2026-06-20T03:13:21.1187894Z     },
2026-06-20T03:13:21.1187999Z     {
2026-06-20T03:13:21.1188136Z       "id": "REQ-HAZARD-PAIR-RATE-LIMIT",
2026-06-20T03:13:21.1189158Z       "title": "Subnet-global pairing rate limit: one active ceremony per subnet, shared attempt counter, exponential backoff — a public pre-trust relay + multiple seed-holders otherwise enables distributed SPAKE2 guessing (and ±1 TOTP window triples the valid-password space) (ADR-0005 #11)",
2026-06-20T03:13:21.1189288Z       "requiredStages": [
2026-06-20T03:13:21.1189392Z         "impl",
2026-06-20T03:13:21.1189507Z         "unit"
2026-06-20T03:13:21.1189607Z       ],
2026-06-20T03:13:21.1189735Z       "stages": {
2026-06-20T03:13:21.1189836Z         "doc": {
2026-06-20T03:13:21.1189950Z           "complete": false,
2026-06-20T03:13:21.1190069Z           "evidence": []
2026-06-20T03:13:21.1190161Z         },
2026-06-20T03:13:21.1190275Z         "impl": {
2026-06-20T03:13:21.1190398Z           "complete": true,
2026-06-20T03:13:21.1190495Z           "evidence": [
2026-06-20T03:13:21.1190598Z             {
2026-06-20T03:13:21.1190776Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-20T03:13:21.1190880Z               "line": 34
2026-06-20T03:13:21.1190985Z             }
2026-06-20T03:13:21.1191086Z           ]
2026-06-20T03:13:21.1191190Z         },
2026-06-20T03:13:21.1191299Z         "int": {
2026-06-20T03:13:21.1191419Z           "complete": false,
2026-06-20T03:13:21.1191533Z           "evidence": []
2026-06-20T03:13:21.1191637Z         },
2026-06-20T03:13:21.1191741Z         "unit": {
2026-06-20T03:13:21.1191855Z           "complete": true,
2026-06-20T03:13:21.1191973Z           "evidence": [
2026-06-20T03:13:21.1192073Z             {
2026-06-20T03:13:21.1192250Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-20T03:13:21.1192374Z               "line": 188
2026-06-20T03:13:21.1192475Z             },
2026-06-20T03:13:21.1192560Z             {
2026-06-20T03:13:21.1192733Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-20T03:13:21.1192841Z               "line": 200
2026-06-20T03:13:21.1192941Z             },
2026-06-20T03:13:21.1193047Z             {
2026-06-20T03:13:21.1193208Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-20T03:13:21.1193328Z               "line": 211
2026-06-20T03:13:21.1193428Z             },
2026-06-20T03:13:21.1193537Z             {
2026-06-20T03:13:21.1193701Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-20T03:13:21.1193813Z               "line": 253
2026-06-20T03:13:21.1193918Z             },
2026-06-20T03:13:21.1194025Z             {
2026-06-20T03:13:21.1194185Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-20T03:13:21.1194308Z               "line": 277
2026-06-20T03:13:21.1194413Z             },
2026-06-20T03:13:21.1194507Z             {
2026-06-20T03:13:21.1194664Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-20T03:13:21.1194779Z               "line": 300
2026-06-20T03:13:21.1194883Z             },
2026-06-20T03:13:21.1194984Z             {
2026-06-20T03:13:21.1195150Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-20T03:13:21.1195260Z               "line": 316
2026-06-20T03:13:21.1195370Z             }
2026-06-20T03:13:21.1195470Z           ]
2026-06-20T03:13:21.1195575Z         }
2026-06-20T03:13:21.1195680Z       }
2026-06-20T03:13:21.1195789Z     },
2026-06-20T03:13:21.1195889Z     {
2026-06-20T03:13:21.1196033Z       "id": "REQ-HAZARD-PAIR-SEED-ROTATION",
2026-06-20T03:13:21.1196601Z       "title": "Removing a node rotates the subnet seed (epoch bump) so an old node/old seed cannot rejoin; trust-store delete alone is NOT revocation because the seed is replicated to every trusted node (ADR-0005 #10)",
2026-06-20T03:13:21.1196911Z       "requiredStages": [
2026-06-20T03:13:21.1197019Z         "impl",
2026-06-20T03:13:21.1197123Z         "unit"
2026-06-20T03:13:21.1197228Z       ],
2026-06-20T03:13:21.1197334Z       "stages": {
2026-06-20T03:13:21.1197433Z         "doc": {
2026-06-20T03:13:21.1197558Z           "complete": false,
2026-06-20T03:13:21.1197668Z           "evidence": []
2026-06-20T03:13:21.1197776Z         },
2026-06-20T03:13:21.1197882Z         "impl": {
2026-06-20T03:13:21.1198006Z           "complete": true,
2026-06-20T03:13:21.1198120Z           "evidence": [
2026-06-20T03:13:21.1198221Z             {
2026-06-20T03:13:21.1198367Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T03:13:21.1198469Z               "line": 29
2026-06-20T03:13:21.1198578Z             },
2026-06-20T03:13:21.1198687Z             {
2026-06-20T03:13:21.1198831Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T03:13:21.1199025Z               "line": 174
2026-06-20T03:13:21.1199118Z             },
2026-06-20T03:13:21.1199217Z             {
2026-06-20T03:13:21.1199363Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T03:13:21.1199473Z               "line": 194
2026-06-20T03:13:21.1199572Z             },
2026-06-20T03:13:21.1199671Z             {
2026-06-20T03:13:21.1199820Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T03:13:21.1199928Z               "line": 222
2026-06-20T03:13:21.1200038Z             }
2026-06-20T03:13:21.1200139Z           ]
2026-06-20T03:13:21.1200243Z         },
2026-06-20T03:13:21.1200338Z         "int": {
2026-06-20T03:13:21.1200454Z           "complete": false,
2026-06-20T03:13:21.1200577Z           "evidence": []
2026-06-20T03:13:21.1200677Z         },
2026-06-20T03:13:21.1200788Z         "unit": {
2026-06-20T03:13:21.1200906Z           "complete": true,
2026-06-20T03:13:21.1201026Z           "evidence": [
2026-06-20T03:13:21.1201126Z             {
2026-06-20T03:13:21.1201273Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T03:13:21.1201389Z               "line": 329
2026-06-20T03:13:21.1201487Z             },
2026-06-20T03:13:21.1201602Z             {
2026-06-20T03:13:21.1201742Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T03:13:21.1201855Z               "line": 344
2026-06-20T03:13:21.1201961Z             },
2026-06-20T03:13:21.1202071Z             {
2026-06-20T03:13:21.1202212Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T03:13:21.1202321Z               "line": 417
2026-06-20T03:13:21.1202425Z             },
2026-06-20T03:13:21.1202528Z             {
2026-06-20T03:13:21.1202682Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T03:13:21.1202796Z               "line": 433
2026-06-20T03:13:21.1202900Z             },
2026-06-20T03:13:21.1202997Z             {
2026-06-20T03:13:21.1203134Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T03:13:21.1203249Z               "line": 492
2026-06-20T03:13:21.1203358Z             },
2026-06-20T03:13:21.1203463Z             {
2026-06-20T03:13:21.1203597Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T03:13:21.1203721Z               "line": 506
2026-06-20T03:13:21.1203821Z             },
2026-06-20T03:13:21.1203922Z             {
2026-06-20T03:13:21.1204068Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T03:13:21.1204174Z               "line": 517
2026-06-20T03:13:21.1204275Z             },
2026-06-20T03:13:21.1204383Z             {
2026-06-20T03:13:21.1204523Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T03:13:21.1204637Z               "line": 528
2026-06-20T03:13:21.1204731Z             }
2026-06-20T03:13:21.1204845Z           ]
2026-06-20T03:13:21.1204949Z         }
2026-06-20T03:13:21.1205043Z       }
2026-06-20T03:13:21.1205147Z     },
2026-06-20T03:13:21.1205348Z     {
2026-06-20T03:13:21.1205505Z       "id": "REQ-HAZARD-PAIR-TRANSCRIPT-BIND",
2026-06-20T03:13:21.1206297Z       "title": "Pairing transcript binds roles, both node pubkeys, subnet ID, seed epoch, TOTP time-step, and confirmation MACs — or unknown-key-share/reflection/wrong-subnet/replay pairing remain possible (ADR-0005 #12)",
2026-06-20T03:13:21.1206430Z       "requiredStages": [
2026-06-20T03:13:21.1206536Z         "impl",
2026-06-20T03:13:21.1206650Z         "unit"
2026-06-20T03:13:21.1206750Z       ],
2026-06-20T03:13:21.1206856Z       "stages": {
2026-06-20T03:13:21.1206960Z         "doc": {
2026-06-20T03:13:21.1207070Z           "complete": false,
2026-06-20T03:13:21.1207199Z           "evidence": []
2026-06-20T03:13:21.1207298Z         },
2026-06-20T03:13:21.1207404Z         "impl": {
2026-06-20T03:13:21.1207532Z           "complete": true,
2026-06-20T03:13:21.1207636Z           "evidence": [
2026-06-20T03:13:21.1207740Z             {
2026-06-20T03:13:21.1207903Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T03:13:21.1208036Z               "line": 27
2026-06-20T03:13:21.1208157Z             },
2026-06-20T03:13:21.1208265Z             {
2026-06-20T03:13:21.1208414Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T03:13:21.1208528Z               "line": 110
2026-06-20T03:13:21.1208641Z             },
2026-06-20T03:13:21.1208738Z             {
2026-06-20T03:13:21.1208900Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T03:13:21.1209082Z               "line": 153
2026-06-20T03:13:21.1209181Z             },
2026-06-20T03:13:21.1209290Z             {
2026-06-20T03:13:21.1209434Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T03:13:21.1209553Z               "line": 182
2026-06-20T03:13:21.1209653Z             },
2026-06-20T03:13:21.1209758Z             {
2026-06-20T03:13:21.1209929Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-20T03:13:21.1210033Z               "line": 31
2026-06-20T03:13:21.1210137Z             },
2026-06-20T03:13:21.1210240Z             {
2026-06-20T03:13:21.1210413Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-20T03:13:21.1210531Z               "line": 113
2026-06-20T03:13:21.1210637Z             },
2026-06-20T03:13:21.1210746Z             {
2026-06-20T03:13:21.1210908Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-20T03:13:21.1211024Z               "line": 138
2026-06-20T03:13:21.1211128Z             }
2026-06-20T03:13:21.1211223Z           ]
2026-06-20T03:13:21.1211319Z         },
2026-06-20T03:13:21.1211429Z         "int": {
2026-06-20T03:13:21.1211552Z           "complete": false,
2026-06-20T03:13:21.1211663Z           "evidence": []
2026-06-20T03:13:21.1211762Z         },
2026-06-20T03:13:21.1211867Z         "unit": {
2026-06-20T03:13:21.1211982Z           "complete": true,
2026-06-20T03:13:21.1212086Z           "evidence": [
2026-06-20T03:13:21.1212191Z             {
2026-06-20T03:13:21.1212358Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T03:13:21.1212472Z               "line": 261
2026-06-20T03:13:21.1212574Z             },
2026-06-20T03:13:21.1212673Z             {
2026-06-20T03:13:21.1212828Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T03:13:21.1212934Z               "line": 276
2026-06-20T03:13:21.1213046Z             },
2026-06-20T03:13:21.1213170Z             {
2026-06-20T03:13:21.1213319Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T03:13:21.1213437Z               "line": 293
2026-06-20T03:13:21.1213538Z             },
2026-06-20T03:13:21.1213648Z             {
2026-06-20T03:13:21.1213794Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T03:13:21.1213919Z               "line": 310
2026-06-20T03:13:21.1214019Z             },
2026-06-20T03:13:21.1214124Z             {
2026-06-20T03:13:21.1214276Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T03:13:21.1214501Z               "line": 327
2026-06-20T03:13:21.1214605Z             },
2026-06-20T03:13:21.1214806Z             {
2026-06-20T03:13:21.1214972Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T03:13:21.1215083Z               "line": 366
2026-06-20T03:13:21.1215183Z             },
2026-06-20T03:13:21.1215291Z             {
2026-06-20T03:13:21.1215458Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-20T03:13:21.1215570Z               "line": 179
2026-06-20T03:13:21.1215675Z             },
2026-06-20T03:13:21.1215785Z             {
2026-06-20T03:13:21.1215956Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-20T03:13:21.1216066Z               "line": 194
2026-06-20T03:13:21.1216176Z             },
2026-06-20T03:13:21.1216275Z             {
2026-06-20T03:13:21.1216453Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-20T03:13:21.1216566Z               "line": 204
2026-06-20T03:13:21.1216676Z             },
2026-06-20T03:13:21.1216796Z             {
2026-06-20T03:13:21.1216967Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-20T03:13:21.1217083Z               "line": 259
2026-06-20T03:13:21.1217187Z             },
2026-06-20T03:13:21.1217287Z             {
2026-06-20T03:13:21.1217449Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-20T03:13:21.1217553Z               "line": 269
2026-06-20T03:13:21.1217659Z             },
2026-06-20T03:13:21.1217764Z             {
2026-06-20T03:13:21.1217930Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-20T03:13:21.1218037Z               "line": 283
2026-06-20T03:13:21.1218139Z             }
2026-06-20T03:13:21.1218248Z           ]
2026-06-20T03:13:21.1218349Z         }
2026-06-20T03:13:21.1218449Z       }
2026-06-20T03:13:21.1218553Z     },
2026-06-20T03:13:21.1218654Z     {
2026-06-20T03:13:21.1218788Z       "id": "REQ-HAZARD-PARENT-PID-PREFER",
2026-06-20T03:13:21.1219093Z       "title": "Prefer stable parent PID / broker handle over ephemeral PID (2.1)",
2026-06-20T03:13:21.1219226Z       "requiredStages": [],
2026-06-20T03:13:21.1219336Z       "stages": {
2026-06-20T03:13:21.1219436Z         "doc": {
2026-06-20T03:13:21.1219555Z           "complete": false,
2026-06-20T03:13:21.1219670Z           "evidence": []
2026-06-20T03:13:21.1219775Z         },
2026-06-20T03:13:21.1219880Z         "impl": {
2026-06-20T03:13:21.1220009Z           "complete": false,
2026-06-20T03:13:21.1220118Z           "evidence": []
2026-06-20T03:13:21.1220219Z         },
2026-06-20T03:13:21.1220314Z         "int": {
2026-06-20T03:13:21.1220432Z           "complete": false,
2026-06-20T03:13:21.1220550Z           "evidence": []
2026-06-20T03:13:21.1220659Z         },
2026-06-20T03:13:21.1220767Z         "unit": {
2026-06-20T03:13:21.1220873Z           "complete": false,
2026-06-20T03:13:21.1220993Z           "evidence": []
2026-06-20T03:13:21.1221096Z         }
2026-06-20T03:13:21.1221207Z       }
2026-06-20T03:13:21.1221307Z     },
2026-06-20T03:13:21.1221402Z     {
2026-06-20T03:13:21.1221555Z       "id": "REQ-HAZARD-PSYCHE-OUTBOUND-PROXY",
2026-06-20T03:13:21.1222398Z       "title": "Psyche outbound captured + sanitized: the live-Psyche turn driver captures stdout (never Stdio::null), and the daemon strips/re-stamps Psyche-supplied from=/target and constrains routing (reply→__REPLY_TO__ sender, notify→own user/subnet) (7.3)",
2026-06-20T03:13:21.1222528Z       "requiredStages": [
2026-06-20T03:13:21.1222636Z         "impl",
2026-06-20T03:13:21.1222742Z         "unit"
2026-06-20T03:13:21.1222847Z       ],
2026-06-20T03:13:21.1222951Z       "stages": {
2026-06-20T03:13:21.1223052Z         "doc": {
2026-06-20T03:13:21.1223167Z           "complete": false,
2026-06-20T03:13:21.1223285Z           "evidence": []
2026-06-20T03:13:21.1223384Z         },
2026-06-20T03:13:21.1223489Z         "impl": {
2026-06-20T03:13:21.1223611Z           "complete": true,
2026-06-20T03:13:21.1223836Z           "evidence": [
2026-06-20T03:13:21.1223940Z             {
2026-06-20T03:13:21.1224089Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-20T03:13:21.1224306Z               "line": 26
2026-06-20T03:13:21.1224404Z             },
2026-06-20T03:13:21.1224503Z             {
2026-06-20T03:13:21.1224660Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-20T03:13:21.1224770Z               "line": 95
2026-06-20T03:13:21.1224880Z             },
2026-06-20T03:13:21.1224984Z             {
2026-06-20T03:13:21.1225137Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-20T03:13:21.1225247Z               "line": 166
2026-06-20T03:13:21.1225353Z             },
2026-06-20T03:13:21.1225457Z             {
2026-06-20T03:13:21.1225624Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-20T03:13:21.1225734Z               "line": 19
2026-06-20T03:13:21.1225837Z             },
2026-06-20T03:13:21.1225946Z             {
2026-06-20T03:13:21.1226094Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-20T03:13:21.1226220Z               "line": 50
2026-06-20T03:13:21.1226330Z             },
2026-06-20T03:13:21.1226437Z             {
2026-06-20T03:13:21.1226583Z               "path": "crates/spt-live/src/turn.rs",
2026-06-20T03:13:21.1226694Z               "line": 18
2026-06-20T03:13:21.1226803Z             },
2026-06-20T03:13:21.1226907Z             {
2026-06-20T03:13:21.1227041Z               "path": "crates/spt-live/src/turn.rs",
2026-06-20T03:13:21.1227160Z               "line": 71
2026-06-20T03:13:21.1227266Z             },
2026-06-20T03:13:21.1227361Z             {
2026-06-20T03:13:21.1227508Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T03:13:21.1227624Z               "line": 87
2026-06-20T03:13:21.1227727Z             }
2026-06-20T03:13:21.1227832Z           ]
2026-06-20T03:13:21.1227933Z         },
2026-06-20T03:13:21.1228037Z         "int": {
2026-06-20T03:13:21.1228161Z           "complete": false,
2026-06-20T03:13:21.1228272Z           "evidence": []
2026-06-20T03:13:21.1228375Z         },
2026-06-20T03:13:21.1228476Z         "unit": {
2026-06-20T03:13:21.1228601Z           "complete": true,
2026-06-20T03:13:21.1228723Z           "evidence": [
2026-06-20T03:13:21.1228827Z             {
2026-06-20T03:13:21.1229075Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-20T03:13:21.1229191Z               "line": 289
2026-06-20T03:13:21.1229295Z             },
2026-06-20T03:13:21.1229404Z             {
2026-06-20T03:13:21.1229544Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-20T03:13:21.1229658Z               "line": 314
2026-06-20T03:13:21.1229757Z             },
2026-06-20T03:13:21.1229859Z             {
2026-06-20T03:13:21.1230006Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-20T03:13:21.1230125Z               "line": 350
2026-06-20T03:13:21.1230226Z             },
2026-06-20T03:13:21.1230330Z             {
2026-06-20T03:13:21.1230484Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-20T03:13:21.1230597Z               "line": 418
2026-06-20T03:13:21.1230702Z             },
2026-06-20T03:13:21.1230803Z             {
2026-06-20T03:13:21.1230954Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-20T03:13:21.1231072Z               "line": 429
2026-06-20T03:13:21.1231178Z             },
2026-06-20T03:13:21.1231285Z             {
2026-06-20T03:13:21.1231428Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-20T03:13:21.1231539Z               "line": 460
2026-06-20T03:13:21.1231642Z             },
2026-06-20T03:13:21.1231752Z             {
2026-06-20T03:13:21.1231900Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-20T03:13:21.1232009Z               "line": 471
2026-06-20T03:13:21.1232116Z             },
2026-06-20T03:13:21.1232215Z             {
2026-06-20T03:13:21.1232368Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-20T03:13:21.1232477Z               "line": 77
2026-06-20T03:13:21.1232697Z             },
2026-06-20T03:13:21.1232801Z             {
2026-06-20T03:13:21.1232954Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-20T03:13:21.1233159Z               "line": 97
2026-06-20T03:13:21.1233264Z             },
2026-06-20T03:13:21.1233365Z             {
2026-06-20T03:13:21.1233511Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-20T03:13:21.1233612Z               "line": 112
2026-06-20T03:13:21.1233714Z             },
2026-06-20T03:13:21.1233812Z             {
2026-06-20T03:13:21.1233954Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-20T03:13:21.1234063Z               "line": 123
2026-06-20T03:13:21.1234171Z             },
2026-06-20T03:13:21.1234276Z             {
2026-06-20T03:13:21.1234425Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-20T03:13:21.1234534Z               "line": 130
2026-06-20T03:13:21.1234639Z             },
2026-06-20T03:13:21.1234749Z             {
2026-06-20T03:13:21.1234890Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-20T03:13:21.1235016Z               "line": 145
2026-06-20T03:13:21.1235130Z             },
2026-06-20T03:13:21.1235230Z             {
2026-06-20T03:13:21.1235373Z               "path": "crates/spt-live/src/turn.rs",
2026-06-20T03:13:21.1235473Z               "line": 115
2026-06-20T03:13:21.1235578Z             },
2026-06-20T03:13:21.1235683Z             {
2026-06-20T03:13:21.1235812Z               "path": "crates/spt-live/src/turn.rs",
2026-06-20T03:13:21.1235923Z               "line": 130
2026-06-20T03:13:21.1236026Z             },
2026-06-20T03:13:21.1236127Z             {
2026-06-20T03:13:21.1236271Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T03:13:21.1236388Z               "line": 428
2026-06-20T03:13:21.1236487Z             }
2026-06-20T03:13:21.1236597Z           ]
2026-06-20T03:13:21.1236705Z         }
2026-06-20T03:13:21.1236809Z       }
2026-06-20T03:13:21.1236919Z     },
2026-06-20T03:13:21.1237020Z     {
2026-06-20T03:13:21.1237181Z       "id": "REQ-HAZARD-PTY-INPUT-WRITER-WEDGE",
2026-06-20T03:13:21.1243429Z       "title": "Pasting into an `spt rc` session WEDGES the broker — after a paste the operator can no longer type AND can no longer attach to NEW or EXISTING sessions (`brain IPC read deadline`). ROOT (doyle /diagnose, code-grounded): the operator-keystroke path rc -> net-stream Input -> serve_attach (attach.rs:197 brain.send_effect) -> KIND_INPUT -> broker dispatch loop (broker.rs:1091) -> dispatch_input (broker.rs:1459) -> session.write_input(&bytes) runs SYNCHRONOUSLY on the broker request-handling thread. W1b (REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE) released the journal lock across the effect (fix 1) + made PtyWrite ephemeral/no-fsync (fix 3) but EXPLICITLY DEFERRED fix (2) — bound/fail-fast the PtyWrite itself. A single keystroke never fills the ConPTY input buffer; a PASTE BURST does -> write_input blocks -> the dispatch thread cannot service the next frame (a re-attach subscribe, a become_controller restore-write, an inject-floor flush) -> wedge. Not a bug-2 regression (the byte path funnels to the same write_input; paste just reliably fills the buffer). FIX (doyle design, V0.13.0-P0-PTY-INPUT-WRITER-DESIGN.md, CONTEXT L33 broker-owns-PTY/minimal + L435 SessionSurface + single-writer pattern): one dedicated per-session INPUT-WRITER THREAD = the SOLE caller of the blocking write_input, fed by a BOUNDED FIFO channel; every caller (dispatch_input, serve_attach->send_effect, inject-floor flush) ENQUEUES + returns immediately, never blocks. A blocked/slow harness blocks ONLY its own writer thread, never the broker dispatch. Backpressure (operator ruling): queue full => DROP excess input + stamp the session INPUT_BACKPRESSURE (visible health signal); the daemon NEVER wedges; a merely-slow harness self-heals as the writer drains. Exactly-once preserved (PtyWrite ephemeral: apply_once effect = the non-blocking enqueue => Applied; ack now means accepted+ordered, benign — rc does not gate on landing); order preserved (single FIFO + single writer); inject-floor (W2 Layer C) choreography moves to the lone writer. Completes the W1b-deferred fix (2), cross-platform (cfg(unix) forkpty park folds in). (v0.13.0)",
2026-06-20T03:13:21.1243862Z       "requiredStages": [
2026-06-20T03:13:21.1243968Z         "impl",
2026-06-20T03:13:21.1246792Z         "unit",
2026-06-20T03:13:21.1246929Z         "int"
2026-06-20T03:13:21.1247028Z       ],
2026-06-20T03:13:21.1247134Z       "stages": {
2026-06-20T03:13:21.1247237Z         "doc": {
2026-06-20T03:13:21.1247364Z           "complete": false,
2026-06-20T03:13:21.1247475Z           "evidence": []
2026-06-20T03:13:21.1247575Z         },
2026-06-20T03:13:21.1247684Z         "impl": {
2026-06-20T03:13:21.1247804Z           "complete": true,
2026-06-20T03:13:21.1247918Z           "evidence": [
2026-06-20T03:13:21.1248013Z             {
2026-06-20T03:13:21.1248181Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.1248285Z               "line": 857
2026-06-20T03:13:21.1248391Z             },
2026-06-20T03:13:21.1248514Z             {
2026-06-20T03:13:21.1248657Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T03:13:21.1248782Z               "line": 322
2026-06-20T03:13:21.1248881Z             }
2026-06-20T03:13:21.1249069Z           ]
2026-06-20T03:13:21.1249163Z         },
2026-06-20T03:13:21.1249258Z         "int": {
2026-06-20T03:13:21.1249379Z           "complete": true,
2026-06-20T03:13:21.1249486Z           "evidence": [
2026-06-20T03:13:21.1249587Z             {
2026-06-20T03:13:21.1249764Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-20T03:13:21.1249886Z               "line": 1909
2026-06-20T03:13:21.1249991Z             }
2026-06-20T03:13:21.1250092Z           ]
2026-06-20T03:13:21.1250192Z         },
2026-06-20T03:13:21.1250296Z         "unit": {
2026-06-20T03:13:21.1250416Z           "complete": true,
2026-06-20T03:13:21.1250530Z           "evidence": [
2026-06-20T03:13:21.1250626Z             {
2026-06-20T03:13:21.1250784Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.1250902Z               "line": 2327
2026-06-20T03:13:21.1251008Z             },
2026-06-20T03:13:21.1251107Z             {
2026-06-20T03:13:21.1251255Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.1251365Z               "line": 2391
2026-06-20T03:13:21.1251474Z             },
2026-06-20T03:13:21.1251580Z             {
2026-06-20T03:13:21.1251732Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.1251851Z               "line": 2446
2026-06-20T03:13:21.1251952Z             }
2026-06-20T03:13:21.1252051Z           ]
2026-06-20T03:13:21.1252146Z         }
2026-06-20T03:13:21.1252251Z       }
2026-06-20T03:13:21.1252354Z     },
2026-06-20T03:13:21.1252448Z     {
2026-06-20T03:13:21.1252591Z       "id": "REQ-HAZARD-PUMP-IPC-DEADLINE",
2026-06-20T03:13:21.1253488Z       "title": "The single-threaded peer pump's brain-IPC reads are deadline-bounded (PUMP_PEER_IO_TIMEOUT, total-wait per call); a TimedOut read POISONS the client and escalates to a SUPERVISED RESTART, never a per-peer retry — a black-holed peer must never wedge the whole pump",
2026-06-20T03:13:21.1253617Z       "requiredStages": [
2026-06-20T03:13:21.1253726Z         "doc",
2026-06-20T03:13:21.1253827Z         "impl",
2026-06-20T03:13:21.1253936Z         "unit"
2026-06-20T03:13:21.1254036Z       ],
2026-06-20T03:13:21.1254142Z       "stages": {
2026-06-20T03:13:21.1254247Z         "doc": {
2026-06-20T03:13:21.1254370Z           "complete": true,
2026-06-20T03:13:21.1254476Z           "evidence": [
2026-06-20T03:13:21.1254585Z             {
2026-06-20T03:13:21.1254733Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T03:13:21.1254834Z               "line": 374
2026-06-20T03:13:21.1254937Z             }
2026-06-20T03:13:21.1255046Z           ]
2026-06-20T03:13:21.1255151Z         },
2026-06-20T03:13:21.1255250Z         "impl": {
2026-06-20T03:13:21.1255373Z           "complete": true,
2026-06-20T03:13:21.1255483Z           "evidence": [
2026-06-20T03:13:21.1255740Z             {
2026-06-20T03:13:21.1255889Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T03:13:21.1256132Z               "line": 200
2026-06-20T03:13:21.1256232Z             },
2026-06-20T03:13:21.1256331Z             {
2026-06-20T03:13:21.1256484Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T03:13:21.1256598Z               "line": 304
2026-06-20T03:13:21.1256704Z             },
2026-06-20T03:13:21.1256799Z             {
2026-06-20T03:13:21.1256941Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T03:13:21.1257052Z               "line": 516
2026-06-20T03:13:21.1257156Z             },
2026-06-20T03:13:21.1257261Z             {
2026-06-20T03:13:21.1257401Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T03:13:21.1257503Z               "line": 531
2026-06-20T03:13:21.1257612Z             },
2026-06-20T03:13:21.1257718Z             {
2026-06-20T03:13:21.1257863Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T03:13:21.1257992Z               "line": 1158
2026-06-20T03:13:21.1258098Z             },
2026-06-20T03:13:21.1258206Z             {
2026-06-20T03:13:21.1258365Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T03:13:21.1258474Z               "line": 443
2026-06-20T03:13:21.1258573Z             },
2026-06-20T03:13:21.1258675Z             {
2026-06-20T03:13:21.1258826Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T03:13:21.1258932Z               "line": 590
2026-06-20T03:13:21.1259132Z             },
2026-06-20T03:13:21.1259236Z             {
2026-06-20T03:13:21.1259380Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T03:13:21.1259484Z               "line": 731
2026-06-20T03:13:21.1259590Z             }
2026-06-20T03:13:21.1259704Z           ]
2026-06-20T03:13:21.1259799Z         },
2026-06-20T03:13:21.1259905Z         "int": {
2026-06-20T03:13:21.1260023Z           "complete": false,
2026-06-20T03:13:21.1260147Z           "evidence": []
2026-06-20T03:13:21.1260244Z         },
2026-06-20T03:13:21.1260347Z         "unit": {
2026-06-20T03:13:21.1260484Z           "complete": true,
2026-06-20T03:13:21.1260585Z           "evidence": [
2026-06-20T03:13:21.1260690Z             {
2026-06-20T03:13:21.1260837Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T03:13:21.1260958Z               "line": 1155
2026-06-20T03:13:21.1261057Z             },
2026-06-20T03:13:21.1261162Z             {
2026-06-20T03:13:21.1261325Z               "path": "crates/spt-daemon/tests/pumpdeadline.rs",
2026-06-20T03:13:21.1261429Z               "line": 30
2026-06-20T03:13:21.1261545Z             }
2026-06-20T03:13:21.1261648Z           ]
2026-06-20T03:13:21.1261753Z         }
2026-06-20T03:13:21.1261854Z       }
2026-06-20T03:13:21.1261958Z     },
2026-06-20T03:13:21.1262063Z     {
2026-06-20T03:13:21.1262193Z       "id": "REQ-HAZARD-RC-ATTACH-FAILFAST",
2026-06-20T03:13:21.1265563Z       "title": "B1: `spt rc <id>` to a DEAD or non-streaming session fails fast with a clear message, never an INFINITE blank screen. Today rc.rs run_attach (209-231) + pump spawns PUMP_IPC_READER and blocks: the poll times out each slice but the stream never produces output, so the operator sees a permanent blank (operator: fresh wall-f attached, closed tab, then `spt rc wall-f` HUNG — the broker still resolved a session for it). FIX: (a) once B2 lands, gate attach on is_online/status — an offline endpoint yields a clean 'endpoint offline, start it' not an attach; (b) fail-fast — if the attach-open ack / first output does not arrive within a bound, surface a clear message, never an infinite blank; (c) the broker EOFs the attach stream when the session's child is dead, so rc's existing PumpEnd::BrokerGone graceful path (REQ-HAZARD-RC-EOF) catches it. PIN the exact sub-mechanism with a repro test FIRST (dead-session-lingers-in-broker vs reaped-but-rc-waits vs alive-resting-no-wake — the wall-f Windows tab-close: child alive-silent vs dead-not-reaped). (v0.12.0)",
2026-06-20T03:13:21.1265838Z       "requiredStages": [
2026-06-20T03:13:21.1265947Z         "impl",
2026-06-20T03:13:21.1266153Z         "unit",
2026-06-20T03:13:21.1266257Z         "int"
2026-06-20T03:13:21.1266358Z       ],
2026-06-20T03:13:21.1266472Z       "stages": {
2026-06-20T03:13:21.1266576Z         "doc": {
2026-06-20T03:13:21.1266692Z           "complete": false,
2026-06-20T03:13:21.1266820Z           "evidence": []
2026-06-20T03:13:21.1266920Z         },
2026-06-20T03:13:21.1267021Z         "impl": {
2026-06-20T03:13:21.1267135Z           "complete": true,
2026-06-20T03:13:21.1267240Z           "evidence": [
2026-06-20T03:13:21.1267340Z             {
2026-06-20T03:13:21.1267473Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.1267594Z               "line": 541
2026-06-20T03:13:21.1267693Z             },
2026-06-20T03:13:21.1267793Z             {
2026-06-20T03:13:21.1267913Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.1268022Z               "line": 705
2026-06-20T03:13:21.1268130Z             }
2026-06-20T03:13:21.1268235Z           ]
2026-06-20T03:13:21.1268344Z         },
2026-06-20T03:13:21.1268452Z         "int": {
2026-06-20T03:13:21.1268571Z           "complete": true,
2026-06-20T03:13:21.1268687Z           "evidence": [
2026-06-20T03:13:21.1268795Z             {
2026-06-20T03:13:21.1268940Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-20T03:13:21.1269139Z               "line": 402
2026-06-20T03:13:21.1269240Z             }
2026-06-20T03:13:21.1269340Z           ]
2026-06-20T03:13:21.1269439Z         },
2026-06-20T03:13:21.1269545Z         "unit": {
2026-06-20T03:13:21.1269663Z           "complete": true,
2026-06-20T03:13:21.1269778Z           "evidence": [
2026-06-20T03:13:21.1269889Z             {
2026-06-20T03:13:21.1270017Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.1270126Z               "line": 881
2026-06-20T03:13:21.1270232Z             },
2026-06-20T03:13:21.1270331Z             {
2026-06-20T03:13:21.1270461Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.1270570Z               "line": 905
2026-06-20T03:13:21.1270679Z             }
2026-06-20T03:13:21.1270785Z           ]
2026-06-20T03:13:21.1270890Z         }
2026-06-20T03:13:21.1270993Z       }
2026-06-20T03:13:21.1271093Z     },
2026-06-20T03:13:21.1271193Z     {
2026-06-20T03:13:21.1271336Z       "id": "REQ-HAZARD-RC-ATTACH-ONLINE-RACE",
2026-06-20T03:13:21.1275114Z       "title": "`spt endpoint run` in an ATTACH/VIEW terminal action attaches BEFORE the freshly-spawned endpoint is online, so the attach races (or outright loses to) the harness bind. ROOT (doyle /diagnose, code-grounded): cmd_endpoint_run (cli.rs) does launch_harness_brokered_in -> (if start: return) -> run_attach with NO await-online between them. launch_harness_brokered_in returns once the harness PROCESS is spawned, but the broker-PTY bind (info status -> STATUS_ONLINE + the live session) lands ASYNC. Both picker attach paths route here with start=false (RunMode::Attach -> cmd_endpoint_run start=false,view=false): Start-now catches the endpoint mid-bringup -> run_attach attempts + loses the handshake race; Resume-from-history catches it still fully OFFLINE -> run_attach's status-gate (REQ-HAZARD-RC-ATTACH-FAILFAST) short-circuits 'offline - nothing to attach' and NEVER attempts. SAME root, two faces (the W4 attach-by-default surfaced both; an online endpoint is unaffected - the picker returns Outcome::Attach, not Run). FIX: in cmd_endpoint_run, when the terminal action is attach/view (NOT start), AWAIT the endpoint online between launch_harness_brokered_in success and run_attach - poll spt_store::info read_info().status to STATUS_ONLINE with a bounded harness-boot deadline (~25s) at a tight interval; on online -> run_attach; on timeout -> ENDPOINT_RUN_ONLINE_TIMEOUT err (do NOT attach a dead bringup). (v0.13.0)",
2026-06-20T03:13:21.1275243Z       "requiredStages": [
2026-06-20T03:13:21.1275348Z         "impl",
2026-06-20T03:13:21.1275457Z         "unit",
2026-06-20T03:13:21.1275668Z         "int"
2026-06-20T03:13:21.1275776Z       ],
2026-06-20T03:13:21.1275883Z       "stages": {
2026-06-20T03:13:21.1276086Z         "doc": {
2026-06-20T03:13:21.1276209Z           "complete": false,
2026-06-20T03:13:21.1276323Z           "evidence": []
2026-06-20T03:13:21.1276432Z         },
2026-06-20T03:13:21.1276531Z         "impl": {
2026-06-20T03:13:21.1276647Z           "complete": true,
2026-06-20T03:13:21.1276755Z           "evidence": [
2026-06-20T03:13:21.1276860Z             {
2026-06-20T03:13:21.1277004Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1277113Z               "line": 1417
2026-06-20T03:13:21.1277224Z             },
2026-06-20T03:13:21.1277323Z             {
2026-06-20T03:13:21.1277461Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1277571Z               "line": 1441
2026-06-20T03:13:21.1277676Z             }
2026-06-20T03:13:21.1277776Z           ]
2026-06-20T03:13:21.1277872Z         },
2026-06-20T03:13:21.1277995Z         "int": {
2026-06-20T03:13:21.1278110Z           "complete": true,
2026-06-20T03:13:21.1278215Z           "evidence": [
2026-06-20T03:13:21.1278324Z             {
2026-06-20T03:13:21.1278488Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-20T03:13:21.1278601Z               "line": 329
2026-06-20T03:13:21.1278705Z             }
2026-06-20T03:13:21.1278810Z           ]
2026-06-20T03:13:21.1278913Z         },
2026-06-20T03:13:21.1279098Z         "unit": {
2026-06-20T03:13:21.1279204Z           "complete": true,
2026-06-20T03:13:21.1279313Z           "evidence": [
2026-06-20T03:13:21.1279412Z             {
2026-06-20T03:13:21.1279542Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1279656Z               "line": 8169
2026-06-20T03:13:21.1279757Z             }
2026-06-20T03:13:21.1279862Z           ]
2026-06-20T03:13:21.1279961Z         }
2026-06-20T03:13:21.1280067Z       }
2026-06-20T03:13:21.1280167Z     },
2026-06-20T03:13:21.1280262Z     {
2026-06-20T03:13:21.1280396Z       "id": "REQ-HAZARD-RC-EOF",
2026-06-20T03:13:21.1284268Z       "title": "A severed broker stream during a live rc session surfaces GRACEFULLY, never as a raw io error that crashes the PTY. The rc read-loop (rc.rs:352-362) continues only on WouldBlock/TimedOut; ANY other read_event_until error — including UnexpectedEof 'failed to fill whole buffer' — returns Err → RC_FAIL → the PTY 'crashes' from the user's view. Confirmed trigger: a deliberate `spt daemon stop` (broker bounce) severs an active rc (perri stopped the daemon to release owlery watch handles). Same severed-broker-stream EOF class as the v0.9.1 seed fix (seed_fail_message) and the listener-death case — spt-core must classify a broker-gone EOF and (a) surface a CLEAR actionable message ('daemon stopped/restarted — re-run / reconnect'), never the raw buffer error, and ideally (b) AUTO-REATTACH to the same session on the fresh broker (the broker is the daemon-lifetime anchor; it returns on the next `spt api` call). FOLD two side-observations: (1) `spt daemon stop` SILENTLY drops active rc/live sessions — warn ('N active session(s) will drop') or graceful-detach on stop; (2) the daemon holds owlery WATCH HANDLES on perch dirs so a torn-down perch dir stays 'Device busy' until a full daemon stop releases them (perri's rt-* cleanup) — a torn-down perch's handle should release without a daemon stop. doyle Finding C, root-caused. (post-v0.10.0)",
2026-06-20T03:13:21.1284467Z       "requiredStages": [
2026-06-20T03:13:21.1284568Z         "impl",
2026-06-20T03:13:21.1284678Z         "unit"
2026-06-20T03:13:21.1284777Z       ],
2026-06-20T03:13:21.1284893Z       "stages": {
2026-06-20T03:13:21.1284992Z         "doc": {
2026-06-20T03:13:21.1285111Z           "complete": false,
2026-06-20T03:13:21.1285232Z           "evidence": []
2026-06-20T03:13:21.1285321Z         },
2026-06-20T03:13:21.1285430Z         "impl": {
2026-06-20T03:13:21.1285546Z           "complete": true,
2026-06-20T03:13:21.1285660Z           "evidence": [
2026-06-20T03:13:21.1285885Z             {
2026-06-20T03:13:21.1286022Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.1286242Z               "line": 728
2026-06-20T03:13:21.1286342Z             }
2026-06-20T03:13:21.1286453Z           ]
2026-06-20T03:13:21.1286557Z         },
2026-06-20T03:13:21.1286665Z         "int": {
2026-06-20T03:13:21.1286780Z           "complete": false,
2026-06-20T03:13:21.1286893Z           "evidence": []
2026-06-20T03:13:21.1287006Z         },
2026-06-20T03:13:21.1287106Z         "unit": {
2026-06-20T03:13:21.1287216Z           "complete": true,
2026-06-20T03:13:21.1287325Z           "evidence": [
2026-06-20T03:13:21.1287430Z             {
2026-06-20T03:13:21.1287565Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.1287673Z               "line": 921
2026-06-20T03:13:21.1287775Z             }
2026-06-20T03:13:21.1287879Z           ]
2026-06-20T03:13:21.1287983Z         }
2026-06-20T03:13:21.1288084Z       }
2026-06-20T03:13:21.1288188Z     },
2026-06-20T03:13:21.1288293Z     {
2026-06-20T03:13:21.1288447Z       "id": "REQ-HAZARD-RC-INPUT-KEY-ENCODING",
2026-06-20T03:13:21.1293086Z       "title": "An `spt rc` session forwards the Backspace key as the VT DEL byte (0x7f), so the hosted TUI (Claude Code) deletes ONE character — never a whole word. SYMPTOM (operator dogfooding): Backspace in an rc session always behaves like ctrl+Backspace — deletes the entire last word. ROOT (doyle /diagnose, code-grounded, byte PENDING HITL confirm): rc is a RAW VERBATIM byte pump — spawn_stdin_reader (rc.rs:152) reads std::io::stdin() bytes under crossterm raw mode and forwards them unchanged (parse_stdin_chunk only intercepts the ctrl-b detach prefix); there is NO key-event encoding and NO 0x08↔0x7f normalization ANYWHERE in the tree (grep: zero SetConsoleMode / ENABLE_VIRTUAL_TERMINAL_INPUT). On Windows, crossterm enable_raw_mode does NOT set ENABLE_VIRTUAL_TERMINAL_INPUT, so the LEGACY console delivers ^H (0x08, ctrl+h) for Backspace instead of VT DEL (0x7f); Claude Code maps ^H → backward-kill-word → the observed whole-word delete. CONFIRM-FIRST (build the loop): an env-gated hexdump in spawn_stdin_reader (SPT_RC_DEBUG_KEYS) prints the forwarded byte; operator presses Backspace + ctrl+Backspace in a real rc session. FIX CANDIDATES: (a) enable ENABLE_VIRTUAL_TERMINAL_INPUT on the rc stdin console on Windows so the console emits proper VT (Backspace→0x7f, arrows/Home/End as CSI) — cleanest, fixes the whole key map not just Backspace; (b) narrow normalize bare 0x08→0x7f in the rc input path (riskier — a real ctrl+h is also 0x08). Prefer (a) unless it regresses other keys. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-20T03:13:21.1293291Z       "requiredStages": [
2026-06-20T03:13:21.1293400Z         "impl",
2026-06-20T03:13:21.1293501Z         "unit"
2026-06-20T03:13:21.1293606Z       ],
2026-06-20T03:13:21.1293711Z       "stages": {
2026-06-20T03:13:21.1293811Z         "doc": {
2026-06-20T03:13:21.1293940Z           "complete": false,
2026-06-20T03:13:21.1294049Z           "evidence": []
2026-06-20T03:13:21.1294170Z         },
2026-06-20T03:13:21.1294278Z         "impl": {
2026-06-20T03:13:21.1294401Z           "complete": true,
2026-06-20T03:13:21.1294506Z           "evidence": [
2026-06-20T03:13:21.1294609Z             {
2026-06-20T03:13:21.1294737Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.1294847Z               "line": 119
2026-06-20T03:13:21.1294957Z             }
2026-06-20T03:13:21.1295061Z           ]
2026-06-20T03:13:21.1295167Z         },
2026-06-20T03:13:21.1295262Z         "int": {
2026-06-20T03:13:21.1295385Z           "complete": false,
2026-06-20T03:13:21.1295501Z           "evidence": []
2026-06-20T03:13:21.1295605Z         },
2026-06-20T03:13:21.1295715Z         "unit": {
2026-06-20T03:13:21.1295820Z           "complete": true,
2026-06-20T03:13:21.1295929Z           "evidence": [
2026-06-20T03:13:21.1296025Z             {
2026-06-20T03:13:21.1296159Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.1296282Z               "line": 903
2026-06-20T03:13:21.1296516Z             },
2026-06-20T03:13:21.1296620Z             {
2026-06-20T03:13:21.1296840Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.1296954Z               "line": 1034
2026-06-20T03:13:21.1297060Z             },
2026-06-20T03:13:21.1297155Z             {
2026-06-20T03:13:21.1297277Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.1297387Z               "line": 1036
2026-06-20T03:13:21.1297495Z             }
2026-06-20T03:13:21.1297594Z           ]
2026-06-20T03:13:21.1297700Z         }
2026-06-20T03:13:21.1297796Z       }
2026-06-20T03:13:21.1297899Z     },
2026-06-20T03:13:21.1298005Z     {
2026-06-20T03:13:21.1298149Z       "id": "REQ-HAZARD-REGISTRY-CONCURRENT",
2026-06-20T03:13:21.1298439Z       "title": "Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)",
2026-06-20T03:13:21.1298548Z       "requiredStages": [
2026-06-20T03:13:21.1298659Z         "impl",
2026-06-20T03:13:21.1298758Z         "unit"
2026-06-20T03:13:21.1298863Z       ],
2026-06-20T03:13:21.1299054Z       "stages": {
2026-06-20T03:13:21.1299168Z         "doc": {
2026-06-20T03:13:21.1299284Z           "complete": true,
2026-06-20T03:13:21.1299392Z           "evidence": [
2026-06-20T03:13:21.1299502Z             {
2026-06-20T03:13:21.1299637Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T03:13:21.1299754Z               "line": 139
2026-06-20T03:13:21.1299858Z             }
2026-06-20T03:13:21.1299959Z           ]
2026-06-20T03:13:21.1300066Z         },
2026-06-20T03:13:21.1300175Z         "impl": {
2026-06-20T03:13:21.1300300Z           "complete": true,
2026-06-20T03:13:21.1300409Z           "evidence": [
2026-06-20T03:13:21.1300514Z             {
2026-06-20T03:13:21.1300653Z               "path": "crates/spt-store/src/db.rs",
2026-06-20T03:13:21.1300767Z               "line": 29
2026-06-20T03:13:21.1300872Z             },
2026-06-20T03:13:21.1300972Z             {
2026-06-20T03:13:21.1301124Z               "path": "crates/spt-store/src/notif.rs",
2026-06-20T03:13:21.1301245Z               "line": 101
2026-06-20T03:13:21.1301354Z             },
2026-06-20T03:13:21.1301458Z             {
2026-06-20T03:13:21.1301611Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T03:13:21.1301725Z               "line": 30
2026-06-20T03:13:21.1301826Z             },
2026-06-20T03:13:21.1301940Z             {
2026-06-20T03:13:21.1302088Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T03:13:21.1302199Z               "line": 48
2026-06-20T03:13:21.1302302Z             }
2026-06-20T03:13:21.1302408Z           ]
2026-06-20T03:13:21.1302514Z         },
2026-06-20T03:13:21.1302612Z         "int": {
2026-06-20T03:13:21.1302739Z           "complete": false,
2026-06-20T03:13:21.1302850Z           "evidence": []
2026-06-20T03:13:21.1302950Z         },
2026-06-20T03:13:21.1303054Z         "unit": {
2026-06-20T03:13:21.1303165Z           "complete": true,
2026-06-20T03:13:21.1303279Z           "evidence": [
2026-06-20T03:13:21.1303388Z             {
2026-06-20T03:13:21.1303532Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T03:13:21.1303655Z               "line": 162
2026-06-20T03:13:21.1303761Z             }
2026-06-20T03:13:21.1303866Z           ]
2026-06-20T03:13:21.1303970Z         }
2026-06-20T03:13:21.1304071Z       }
2026-06-20T03:13:21.1304166Z     },
2026-06-20T03:13:21.1304271Z     {
2026-06-20T03:13:21.1304406Z       "id": "REQ-HAZARD-REGISTRY-DIR-CREATE",
2026-06-20T03:13:21.1304820Z       "title": "SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)",
2026-06-20T03:13:21.1304937Z       "requiredStages": [
2026-06-20T03:13:21.1305042Z         "doc",
2026-06-20T03:13:21.1305151Z         "impl",
2026-06-20T03:13:21.1305254Z         "unit"
2026-06-20T03:13:21.1305359Z       ],
2026-06-20T03:13:21.1305470Z       "stages": {
2026-06-20T03:13:21.1305574Z         "doc": {
2026-06-20T03:13:21.1305694Z           "complete": true,
2026-06-20T03:13:21.1305921Z           "evidence": [
2026-06-20T03:13:21.1306032Z             {
2026-06-20T03:13:21.1306174Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T03:13:21.1306461Z               "line": 151
2026-06-20T03:13:21.1306565Z             }
2026-06-20T03:13:21.1306671Z           ]
2026-06-20T03:13:21.1306776Z         },
2026-06-20T03:13:21.1306875Z         "impl": {
2026-06-20T03:13:21.1306996Z           "complete": true,
2026-06-20T03:13:21.1307109Z           "evidence": [
2026-06-20T03:13:21.1307214Z             {
2026-06-20T03:13:21.1307367Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T03:13:21.1307477Z               "line": 22
2026-06-20T03:13:21.1307582Z             }
2026-06-20T03:13:21.1307682Z           ]
2026-06-20T03:13:21.1307785Z         },
2026-06-20T03:13:21.1307890Z         "int": {
2026-06-20T03:13:21.1308009Z           "complete": false,
2026-06-20T03:13:21.1308126Z           "evidence": []
2026-06-20T03:13:21.1308227Z         },
2026-06-20T03:13:21.1308341Z         "unit": {
2026-06-20T03:13:21.1308450Z           "complete": true,
2026-06-20T03:13:21.1308561Z           "evidence": [
2026-06-20T03:13:21.1308675Z             {
2026-06-20T03:13:21.1308827Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T03:13:21.1308933Z               "line": 298
2026-06-20T03:13:21.1309132Z             }
2026-06-20T03:13:21.1309238Z           ]
2026-06-20T03:13:21.1309337Z         }
2026-06-20T03:13:21.1309447Z       }
2026-06-20T03:13:21.1309553Z     },
2026-06-20T03:13:21.1309657Z     {
2026-06-20T03:13:21.1309805Z       "id": "REQ-HAZARD-REGISTRY-EPOCH-LEASE",
2026-06-20T03:13:21.1310282Z       "title": "Registry merge ordered by per-node monotonic epoch, never wall-clock — a stale Active can't clobber a newer Offline (4.8, red-team #8)",
2026-06-20T03:13:21.1310409Z       "requiredStages": [
2026-06-20T03:13:21.1310509Z         "impl",
2026-06-20T03:13:21.1310618Z         "unit"
2026-06-20T03:13:21.1310717Z       ],
2026-06-20T03:13:21.1310841Z       "stages": {
2026-06-20T03:13:21.1310947Z         "doc": {
2026-06-20T03:13:21.1311055Z           "complete": true,
2026-06-20T03:13:21.1311181Z           "evidence": [
2026-06-20T03:13:21.1311285Z             {
2026-06-20T03:13:21.1311418Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T03:13:21.1311528Z               "line": 145
2026-06-20T03:13:21.1311637Z             }
2026-06-20T03:13:21.1311743Z           ]
2026-06-20T03:13:21.1311848Z         },
2026-06-20T03:13:21.1311952Z         "impl": {
2026-06-20T03:13:21.1312067Z           "complete": true,
2026-06-20T03:13:21.1312181Z           "evidence": [
2026-06-20T03:13:21.1312285Z             {
2026-06-20T03:13:21.1312459Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-20T03:13:21.1312582Z               "line": 160
2026-06-20T03:13:21.1312677Z             },
2026-06-20T03:13:21.1312783Z             {
2026-06-20T03:13:21.1312944Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.1313064Z               "line": 200
2026-06-20T03:13:21.1313172Z             },
2026-06-20T03:13:21.1313276Z             {
2026-06-20T03:13:21.1313430Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1313534Z               "line": 298
2026-06-20T03:13:21.1313638Z             },
2026-06-20T03:13:21.1313744Z             {
2026-06-20T03:13:21.1313896Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-20T03:13:21.1314002Z               "line": 20
2026-06-20T03:13:21.1314102Z             }
2026-06-20T03:13:21.1314206Z           ]
2026-06-20T03:13:21.1314316Z         },
2026-06-20T03:13:21.1314426Z         "int": {
2026-06-20T03:13:21.1314544Z           "complete": false,
2026-06-20T03:13:21.1314670Z           "evidence": []
2026-06-20T03:13:21.1314774Z         },
2026-06-20T03:13:21.1314879Z         "unit": {
2026-06-20T03:13:21.1314994Z           "complete": true,
2026-06-20T03:13:21.1315102Z           "evidence": [
2026-06-20T03:13:21.1315208Z             {
2026-06-20T03:13:21.1315479Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.1315602Z               "line": 937
2026-06-20T03:13:21.1315810Z             },
2026-06-20T03:13:21.1315919Z             {
2026-06-20T03:13:21.1316072Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-20T03:13:21.1316176Z               "line": 88
2026-06-20T03:13:21.1316287Z             },
2026-06-20T03:13:21.1316387Z             {
2026-06-20T03:13:21.1316544Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1316659Z               "line": 851
2026-06-20T03:13:21.1316763Z             },
2026-06-20T03:13:21.1316884Z             {
2026-06-20T03:13:21.1317026Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1317140Z               "line": 870
2026-06-20T03:13:21.1317246Z             },
2026-06-20T03:13:21.1317350Z             {
2026-06-20T03:13:21.1317503Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-20T03:13:21.1317631Z               "line": 279
2026-06-20T03:13:21.1317736Z             },
2026-06-20T03:13:21.1317838Z             {
2026-06-20T03:13:21.1317989Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-20T03:13:21.1318094Z               "line": 82
2026-06-20T03:13:21.1318200Z             },
2026-06-20T03:13:21.1318308Z             {
2026-06-20T03:13:21.1318455Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-20T03:13:21.1318559Z               "line": 99
2026-06-20T03:13:21.1318668Z             },
2026-06-20T03:13:21.1318768Z             {
2026-06-20T03:13:21.1318911Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-20T03:13:21.1319092Z               "line": 119
2026-06-20T03:13:21.1319193Z             }
2026-06-20T03:13:21.1319292Z           ]
2026-06-20T03:13:21.1319397Z         }
2026-06-20T03:13:21.1319503Z       }
2026-06-20T03:13:21.1319612Z     },
2026-06-20T03:13:21.1319707Z     {
2026-06-20T03:13:21.1319855Z       "id": "REQ-HAZARD-REGISTRY-GHOST-ROWS",
2026-06-20T03:13:21.1321187Z       "title": "A dead node identity's registry rows must decay: only the per-(endpoint,node) epoch lease supersedes rows, so without eviction a vanished node's rows are immortal and poison bare-id resolution with phantom AcrossNodes ambiguity — evict rows whose author node has not been heard (admitted inbound feed) within the eviction window; own rows never decay; a revived node re-inserts from its durable epoch within one pump cadence (4.10)",
2026-06-20T03:13:21.1321315Z       "requiredStages": [
2026-06-20T03:13:21.1321426Z         "doc",
2026-06-20T03:13:21.1321535Z         "impl",
2026-06-20T03:13:21.1321644Z         "unit"
2026-06-20T03:13:21.1321741Z       ],
2026-06-20T03:13:21.1321850Z       "stages": {
2026-06-20T03:13:21.1321949Z         "doc": {
2026-06-20T03:13:21.1322069Z           "complete": true,
2026-06-20T03:13:21.1322183Z           "evidence": [
2026-06-20T03:13:21.1322283Z             {
2026-06-20T03:13:21.1322427Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T03:13:21.1322555Z               "line": 157
2026-06-20T03:13:21.1322656Z             }
2026-06-20T03:13:21.1322784Z           ]
2026-06-20T03:13:21.1322879Z         },
2026-06-20T03:13:21.1322990Z         "impl": {
2026-06-20T03:13:21.1323103Z           "complete": true,
2026-06-20T03:13:21.1323213Z           "evidence": [
2026-06-20T03:13:21.1323324Z             {
2026-06-20T03:13:21.1323481Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-20T03:13:21.1323582Z               "line": 137
2026-06-20T03:13:21.1323686Z             },
2026-06-20T03:13:21.1323789Z             {
2026-06-20T03:13:21.1323946Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.1324057Z               "line": 564
2026-06-20T03:13:21.1324161Z             },
2026-06-20T03:13:21.1324266Z             {
2026-06-20T03:13:21.1324428Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.1324533Z               "line": 571
2026-06-20T03:13:21.1324643Z             },
2026-06-20T03:13:21.1324857Z             {
2026-06-20T03:13:21.1325005Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1325206Z               "line": 227
2026-06-20T03:13:21.1325310Z             }
2026-06-20T03:13:21.1325415Z           ]
2026-06-20T03:13:21.1325521Z         },
2026-06-20T03:13:21.1325630Z         "int": {
2026-06-20T03:13:21.1325744Z           "complete": false,
2026-06-20T03:13:21.1325865Z           "evidence": []
2026-06-20T03:13:21.1325968Z         },
2026-06-20T03:13:21.1326077Z         "unit": {
2026-06-20T03:13:21.1326191Z           "complete": true,
2026-06-20T03:13:21.1326295Z           "evidence": [
2026-06-20T03:13:21.1326399Z             {
2026-06-20T03:13:21.1326557Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.1326670Z               "line": 1622
2026-06-20T03:13:21.1326771Z             },
2026-06-20T03:13:21.1326871Z             {
2026-06-20T03:13:21.1327028Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.1327148Z               "line": 1680
2026-06-20T03:13:21.1327258Z             },
2026-06-20T03:13:21.1327366Z             {
2026-06-20T03:13:21.1327520Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1327638Z               "line": 883
2026-06-20T03:13:21.1327739Z             }
2026-06-20T03:13:21.1327844Z           ]
2026-06-20T03:13:21.1327953Z         }
2026-06-20T03:13:21.1328054Z       }
2026-06-20T03:13:21.1328159Z     },
2026-06-20T03:13:21.1328263Z     {
2026-06-20T03:13:21.1328412Z       "id": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
2026-06-20T03:13:21.1328635Z       "title": "Stale registry entries degrade to fallback, never hard-fail (4.3)",
2026-06-20T03:13:21.1328761Z       "requiredStages": [
2026-06-20T03:13:21.1328863Z         "impl",
2026-06-20T03:13:21.1329030Z         "unit"
2026-06-20T03:13:21.1329129Z       ],
2026-06-20T03:13:21.1329237Z       "stages": {
2026-06-20T03:13:21.1329347Z         "doc": {
2026-06-20T03:13:21.1329467Z           "complete": false,
2026-06-20T03:13:21.1329571Z           "evidence": []
2026-06-20T03:13:21.1329681Z         },
2026-06-20T03:13:21.1329791Z         "impl": {
2026-06-20T03:13:21.1329909Z           "complete": true,
2026-06-20T03:13:21.1330006Z           "evidence": [
2026-06-20T03:13:21.1330110Z             {
2026-06-20T03:13:21.1330253Z               "path": "crates/spt-store/src/proc.rs",
2026-06-20T03:13:21.1330368Z               "line": 15
2026-06-20T03:13:21.1330468Z             },
2026-06-20T03:13:21.1330568Z             {
2026-06-20T03:13:21.1330711Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T03:13:21.1330825Z               "line": 55
2026-06-20T03:13:21.1330936Z             },
2026-06-20T03:13:21.1331040Z             {
2026-06-20T03:13:21.1331197Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T03:13:21.1331299Z               "line": 66
2026-06-20T03:13:21.1331402Z             },
2026-06-20T03:13:21.1331501Z             {
2026-06-20T03:13:21.1331654Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T03:13:21.1331771Z               "line": 115
2026-06-20T03:13:21.1331885Z             },
2026-06-20T03:13:21.1331991Z             {
2026-06-20T03:13:21.1332133Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T03:13:21.1332243Z               "line": 138
2026-06-20T03:13:21.1332353Z             }
2026-06-20T03:13:21.1332457Z           ]
2026-06-20T03:13:21.1332563Z         },
2026-06-20T03:13:21.1332668Z         "int": {
2026-06-20T03:13:21.1332796Z           "complete": false,
2026-06-20T03:13:21.1332902Z           "evidence": []
2026-06-20T03:13:21.1333001Z         },
2026-06-20T03:13:21.1333111Z         "unit": {
2026-06-20T03:13:21.1333226Z           "complete": true,
2026-06-20T03:13:21.1333330Z           "evidence": [
2026-06-20T03:13:21.1333425Z             {
2026-06-20T03:13:21.1333579Z               "path": "crates/spt-store/src/proc.rs",
2026-06-20T03:13:21.1333687Z               "line": 363
2026-06-20T03:13:21.1333926Z             },
2026-06-20T03:13:21.1334031Z             {
2026-06-20T03:13:21.1334156Z               "path": "crates/spt-store/src/proc.rs",
2026-06-20T03:13:21.1334359Z               "line": 369
2026-06-20T03:13:21.1334454Z             },
2026-06-20T03:13:21.1334565Z             {
2026-06-20T03:13:21.1334702Z               "path": "crates/spt-store/src/proc.rs",
2026-06-20T03:13:21.1334817Z               "line": 383
2026-06-20T03:13:21.1334922Z             },
2026-06-20T03:13:21.1335026Z             {
2026-06-20T03:13:21.1335170Z               "path": "crates/spt-store/src/proc.rs",
2026-06-20T03:13:21.1335275Z               "line": 392
2026-06-20T03:13:21.1335384Z             },
2026-06-20T03:13:21.1335490Z             {
2026-06-20T03:13:21.1335646Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T03:13:21.1335767Z               "line": 195
2026-06-20T03:13:21.1335861Z             },
2026-06-20T03:13:21.1335971Z             {
2026-06-20T03:13:21.1336119Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T03:13:21.1336251Z               "line": 208
2026-06-20T03:13:21.1336362Z             },
2026-06-20T03:13:21.1336467Z             {
2026-06-20T03:13:21.1336618Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T03:13:21.1336723Z               "line": 271
2026-06-20T03:13:21.1336832Z             },
2026-06-20T03:13:21.1336935Z             {
2026-06-20T03:13:21.1337078Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T03:13:21.1337188Z               "line": 290
2026-06-20T03:13:21.1337302Z             },
2026-06-20T03:13:21.1337413Z             {
2026-06-20T03:13:21.1337560Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T03:13:21.1337675Z               "line": 319
2026-06-20T03:13:21.1337770Z             }
2026-06-20T03:13:21.1337875Z           ]
2026-06-20T03:13:21.1337970Z         }
2026-06-20T03:13:21.1338075Z       }
2026-06-20T03:13:21.1338180Z     },
2026-06-20T03:13:21.1338271Z     {
2026-06-20T03:13:21.1338423Z       "id": "REQ-HAZARD-RESTART-IDEMPOTENT",
2026-06-20T03:13:21.1338715Z       "title": "Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)",
2026-06-20T03:13:21.1338843Z       "requiredStages": [
2026-06-20T03:13:21.1339010Z         "impl",
2026-06-20T03:13:21.1339118Z         "unit",
2026-06-20T03:13:21.1339220Z         "int"
2026-06-20T03:13:21.1339325Z       ],
2026-06-20T03:13:21.1339429Z       "stages": {
2026-06-20T03:13:21.1339533Z         "doc": {
2026-06-20T03:13:21.1339657Z           "complete": false,
2026-06-20T03:13:21.1339764Z           "evidence": []
2026-06-20T03:13:21.1339873Z         },
2026-06-20T03:13:21.1339984Z         "impl": {
2026-06-20T03:13:21.1340098Z           "complete": true,
2026-06-20T03:13:21.1340212Z           "evidence": [
2026-06-20T03:13:21.1340313Z             {
2026-06-20T03:13:21.1340465Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T03:13:21.1340576Z               "line": 448
2026-06-20T03:13:21.1340675Z             },
2026-06-20T03:13:21.1340784Z             {
2026-06-20T03:13:21.1340924Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T03:13:21.1341038Z               "line": 868
2026-06-20T03:13:21.1341142Z             },
2026-06-20T03:13:21.1341248Z             {
2026-06-20T03:13:21.1341395Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T03:13:21.1344348Z               "line": 913
2026-06-20T03:13:21.1344459Z             },
2026-06-20T03:13:21.1344562Z             {
2026-06-20T03:13:21.1344711Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T03:13:21.1344820Z               "line": 938
2026-06-20T03:13:21.1344929Z             },
2026-06-20T03:13:21.1345029Z             {
2026-06-20T03:13:21.1345182Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.1345290Z               "line": 1588
2026-06-20T03:13:21.1345397Z             },
2026-06-20T03:13:21.1345497Z             {
2026-06-20T03:13:21.1345787Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.1345901Z               "line": 1822
2026-06-20T03:13:21.1346102Z             },
2026-06-20T03:13:21.1346211Z             {
2026-06-20T03:13:21.1346351Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.1346464Z               "line": 1953
2026-06-20T03:13:21.1346564Z             },
2026-06-20T03:13:21.1346671Z             {
2026-06-20T03:13:21.1346821Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.1346942Z               "line": 2001
2026-06-20T03:13:21.1347046Z             },
2026-06-20T03:13:21.1347145Z             {
2026-06-20T03:13:21.1347283Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-20T03:13:21.1347401Z               "line": 46
2026-06-20T03:13:21.1347490Z             },
2026-06-20T03:13:21.1347605Z             {
2026-06-20T03:13:21.1347748Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-20T03:13:21.1347852Z               "line": 200
2026-06-20T03:13:21.1347973Z             },
2026-06-20T03:13:21.1348077Z             {
2026-06-20T03:13:21.1348225Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-20T03:13:21.1348340Z               "line": 132
2026-06-20T03:13:21.1348439Z             },
2026-06-20T03:13:21.1348545Z             {
2026-06-20T03:13:21.1348683Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T03:13:21.1348801Z               "line": 137
2026-06-20T03:13:21.1348894Z             },
2026-06-20T03:13:21.1349069Z             {
2026-06-20T03:13:21.1349209Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T03:13:21.1349322Z               "line": 183
2026-06-20T03:13:21.1349427Z             }
2026-06-20T03:13:21.1349528Z           ]
2026-06-20T03:13:21.1349636Z         },
2026-06-20T03:13:21.1349737Z         "int": {
2026-06-20T03:13:21.1349857Z           "complete": true,
2026-06-20T03:13:21.1349970Z           "evidence": [
2026-06-20T03:13:21.1350069Z             {
2026-06-20T03:13:21.1350240Z               "path": "crates/spt-daemon/tests/idempotent.rs",
2026-06-20T03:13:21.1350348Z               "line": 27
2026-06-20T03:13:21.1350458Z             },
2026-06-20T03:13:21.1350559Z             {
2026-06-20T03:13:21.1350724Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-20T03:13:21.1350835Z               "line": 148
2026-06-20T03:13:21.1350940Z             },
2026-06-20T03:13:21.1351044Z             {
2026-06-20T03:13:21.1351193Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-20T03:13:21.1351307Z               "line": 200
2026-06-20T03:13:21.1351407Z             }
2026-06-20T03:13:21.1351513Z           ]
2026-06-20T03:13:21.1351617Z         },
2026-06-20T03:13:21.1351717Z         "unit": {
2026-06-20T03:13:21.1351842Z           "complete": true,
2026-06-20T03:13:21.1351951Z           "evidence": [
2026-06-20T03:13:21.1352051Z             {
2026-06-20T03:13:21.1352194Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-20T03:13:21.1352313Z               "line": 366
2026-06-20T03:13:21.1352414Z             },
2026-06-20T03:13:21.1352514Z             {
2026-06-20T03:13:21.1352669Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-20T03:13:21.1352765Z               "line": 398
2026-06-20T03:13:21.1352882Z             },
2026-06-20T03:13:21.1352977Z             {
2026-06-20T03:13:21.1353130Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-20T03:13:21.1353243Z               "line": 419
2026-06-20T03:13:21.1353344Z             },
2026-06-20T03:13:21.1353449Z             {
2026-06-20T03:13:21.1353601Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T03:13:21.1353707Z               "line": 628
2026-06-20T03:13:21.1353812Z             },
2026-06-20T03:13:21.1353916Z             {
2026-06-20T03:13:21.1354070Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-20T03:13:21.1354174Z               "line": 289
2026-06-20T03:13:21.1354283Z             },
2026-06-20T03:13:21.1354380Z             {
2026-06-20T03:13:21.1354642Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-20T03:13:21.1354851Z               "line": 230
2026-06-20T03:13:21.1354948Z             },
2026-06-20T03:13:21.1355052Z             {
2026-06-20T03:13:21.1355199Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T03:13:21.1355310Z               "line": 526
2026-06-20T03:13:21.1355409Z             },
2026-06-20T03:13:21.1355513Z             {
2026-06-20T03:13:21.1355657Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T03:13:21.1355770Z               "line": 556
2026-06-20T03:13:21.1355875Z             }
2026-06-20T03:13:21.1355976Z           ]
2026-06-20T03:13:21.1356076Z         }
2026-06-20T03:13:21.1356171Z       }
2026-06-20T03:13:21.1356277Z     },
2026-06-20T03:13:21.1356377Z     {
2026-06-20T03:13:21.1356538Z       "id": "REQ-HAZARD-ROLLBACK-STATE-COMPAT",
2026-06-20T03:13:21.1358304Z       "title": "A brain must not irreversibly migrate durable state before update ready-promotion: the readiness-gated auto-rollback (ADR-0018 Q7) spawns the N-1 binary against durable state the new brain may have written, so every pre-ready write must stay N-1-readable (schema migrations gated behind ready-promotion, or written N-1-tolerant/additive). Else the first in-place schema migration silently bricks rollback (KNOWN-HAZARDS 6.8). Free now — a 2026-06-09 audit confirmed zero state-migration code exists; unmintable retroactively once a migration ships.",
2026-06-20T03:13:21.1358437Z       "requiredStages": [
2026-06-20T03:13:21.1358543Z         "doc",
2026-06-20T03:13:21.1358647Z         "impl",
2026-06-20T03:13:21.1358746Z         "unit"
2026-06-20T03:13:21.1358853Z       ],
2026-06-20T03:13:21.1359033Z       "stages": {
2026-06-20T03:13:21.1359125Z         "doc": {
2026-06-20T03:13:21.1359243Z           "complete": true,
2026-06-20T03:13:21.1359352Z           "evidence": [
2026-06-20T03:13:21.1359459Z             {
2026-06-20T03:13:21.1359591Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T03:13:21.1359725Z               "line": 314
2026-06-20T03:13:21.1359825Z             }
2026-06-20T03:13:21.1359944Z           ]
2026-06-20T03:13:21.1360035Z         },
2026-06-20T03:13:21.1360136Z         "impl": {
2026-06-20T03:13:21.1360254Z           "complete": true,
2026-06-20T03:13:21.1360355Z           "evidence": [
2026-06-20T03:13:21.1360460Z             {
2026-06-20T03:13:21.1360629Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-20T03:13:21.1360739Z               "line": 33
2026-06-20T03:13:21.1360842Z             },
2026-06-20T03:13:21.1360946Z             {
2026-06-20T03:13:21.1361119Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-20T03:13:21.1361219Z               "line": 39
2026-06-20T03:13:21.1361314Z             }
2026-06-20T03:13:21.1361415Z           ]
2026-06-20T03:13:21.1361524Z         },
2026-06-20T03:13:21.1361623Z         "int": {
2026-06-20T03:13:21.1361753Z           "complete": false,
2026-06-20T03:13:21.1361867Z           "evidence": []
2026-06-20T03:13:21.1361972Z         },
2026-06-20T03:13:21.1362077Z         "unit": {
2026-06-20T03:13:21.1362186Z           "complete": true,
2026-06-20T03:13:21.1362296Z           "evidence": [
2026-06-20T03:13:21.1362397Z             {
2026-06-20T03:13:21.1362563Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-20T03:13:21.1362669Z               "line": 95
2026-06-20T03:13:21.1362773Z             }
2026-06-20T03:13:21.1362878Z           ]
2026-06-20T03:13:21.1362984Z         }
2026-06-20T03:13:21.1363102Z       }
2026-06-20T03:13:21.1363196Z     },
2026-06-20T03:13:21.1363297Z     {
2026-06-20T03:13:21.1363423Z       "id": "REQ-HAZARD-ROSTER-GHOST",
2026-06-20T03:13:21.1365889Z       "title": "A LOCAL subnet roster entry whose backing perch is erased does NOT keep advertising Active (no phantom perch-less endpoint). `api session-end <id> --erase` removes the perch (owlery dir gone) but the subnet roster (identity/registry/<subnet>.json) keeps the endpoint's instance row ACTIVE with no backing perch; `endpoint stop` says 'address unregistered' yet the line persists; no CLI verb forgets a roster entry, and a hand-edit is re-added by the single-writer daemon advertiser. FIX: daemon-side self-heal — the advertiser DROPS/forgets a LOCAL roster entry whose backing perch no longer exists (stops advertising it Active), and/or a `forget`/evict verb; verify whether the epoch lease eventually evicts it (slow-self-heal) vs a real leak and scope accordingly. doyle secondary finding (perri). (post-v0.10.0)",
2026-06-20T03:13:21.1366245Z       "requiredStages": [
2026-06-20T03:13:21.1366359Z         "impl",
2026-06-20T03:13:21.1366469Z         "unit"
2026-06-20T03:13:21.1366574Z       ],
2026-06-20T03:13:21.1366678Z       "stages": {
2026-06-20T03:13:21.1366789Z         "doc": {
2026-06-20T03:13:21.1366908Z           "complete": false,
2026-06-20T03:13:21.1367016Z           "evidence": []
2026-06-20T03:13:21.1367128Z         },
2026-06-20T03:13:21.1367222Z         "impl": {
2026-06-20T03:13:21.1367365Z           "complete": true,
2026-06-20T03:13:21.1367471Z           "evidence": [
2026-06-20T03:13:21.1367599Z             {
2026-06-20T03:13:21.1367753Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.1367862Z               "line": 488
2026-06-20T03:13:21.1367966Z             }
2026-06-20T03:13:21.1368072Z           ]
2026-06-20T03:13:21.1368172Z         },
2026-06-20T03:13:21.1368280Z         "int": {
2026-06-20T03:13:21.1368404Z           "complete": false,
2026-06-20T03:13:21.1368517Z           "evidence": []
2026-06-20T03:13:21.1368626Z         },
2026-06-20T03:13:21.1368730Z         "unit": {
2026-06-20T03:13:21.1368846Z           "complete": true,
2026-06-20T03:13:21.1369036Z           "evidence": [
2026-06-20T03:13:21.1369136Z             {
2026-06-20T03:13:21.1369307Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.1369423Z               "line": 1466
2026-06-20T03:13:21.1369532Z             }
2026-06-20T03:13:21.1369641Z           ]
2026-06-20T03:13:21.1369742Z         }
2026-06-20T03:13:21.1369842Z       }
2026-06-20T03:13:21.1369951Z     },
2026-06-20T03:13:21.1370052Z     {
2026-06-20T03:13:21.1370185Z       "id": "REQ-HAZARD-SELF-ELEVATE",
2026-06-20T03:13:21.1372366Z       "title": "Self-elevation (REQ-ELEVATE-1) re-runs the EXACT original invocation with the binary's ABSOLUTE exe path — never widening privilege scope, never adding/altering args, never via a PATH-resolved bare name, never via a shell-interpolated command string (argv-array only, no `sh -c`); the elevated child drops state back to the user (composes with the 5.7 de-elevation) and NEVER re-elevates (loop-safe: decide_elevation_path returns AlreadyElevated whenever the process is already Elevated, on every OS). The user's UAC/polkit/sudo prompt is the only consent gate — we never bypass it; the print-hint floor prints the absolute-path command too. The unprivileged parent never depends on (pipes/captures) the privileged child's stdout.",
2026-06-20T03:13:21.1372513Z       "requiredStages": [
2026-06-20T03:13:21.1372619Z         "unit"
2026-06-20T03:13:21.1372742Z       ],
2026-06-20T03:13:21.1372847Z       "stages": {
2026-06-20T03:13:21.1372943Z         "doc": {
2026-06-20T03:13:21.1373061Z           "complete": false,
2026-06-20T03:13:21.1373177Z           "evidence": []
2026-06-20T03:13:21.1373286Z         },
2026-06-20T03:13:21.1373385Z         "impl": {
2026-06-20T03:13:21.1373496Z           "complete": true,
2026-06-20T03:13:21.1373615Z           "evidence": [
2026-06-20T03:13:21.1373719Z             {
2026-06-20T03:13:21.1373857Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1373955Z               "line": 3520
2026-06-20T03:13:21.1374059Z             },
2026-06-20T03:13:21.1374164Z             {
2026-06-20T03:13:21.1374294Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1374411Z               "line": 3572
2026-06-20T03:13:21.1374504Z             },
2026-06-20T03:13:21.1374613Z             {
2026-06-20T03:13:21.1374909Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1375022Z               "line": 3617
2026-06-20T03:13:21.1375218Z             },
2026-06-20T03:13:21.1375313Z             {
2026-06-20T03:13:21.1375463Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T03:13:21.1375566Z               "line": 92
2026-06-20T03:13:21.1375671Z             },
2026-06-20T03:13:21.1375768Z             {
2026-06-20T03:13:21.1375924Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T03:13:21.1376058Z               "line": 148
2026-06-20T03:13:21.1376158Z             },
2026-06-20T03:13:21.1376267Z             {
2026-06-20T03:13:21.1376407Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T03:13:21.1376524Z               "line": 192
2026-06-20T03:13:21.1376609Z             },
2026-06-20T03:13:21.1376719Z             {
2026-06-20T03:13:21.1376858Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T03:13:21.1376966Z               "line": 200
2026-06-20T03:13:21.1377087Z             },
2026-06-20T03:13:21.1377187Z             {
2026-06-20T03:13:21.1377325Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T03:13:21.1377444Z               "line": 211
2026-06-20T03:13:21.1377549Z             },
2026-06-20T03:13:21.1377654Z             {
2026-06-20T03:13:21.1377793Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T03:13:21.1377911Z               "line": 265
2026-06-20T03:13:21.1378013Z             },
2026-06-20T03:13:21.1378116Z             {
2026-06-20T03:13:21.1378249Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T03:13:21.1378370Z               "line": 279
2026-06-20T03:13:21.1378469Z             }
2026-06-20T03:13:21.1378574Z           ]
2026-06-20T03:13:21.1378670Z         },
2026-06-20T03:13:21.1378769Z         "int": {
2026-06-20T03:13:21.1378888Z           "complete": false,
2026-06-20T03:13:21.1379054Z           "evidence": []
2026-06-20T03:13:21.1379157Z         },
2026-06-20T03:13:21.1379267Z         "unit": {
2026-06-20T03:13:21.1379387Z           "complete": true,
2026-06-20T03:13:21.1379495Z           "evidence": [
2026-06-20T03:13:21.1379606Z             {
2026-06-20T03:13:21.1379739Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T03:13:21.1379838Z               "line": 419
2026-06-20T03:13:21.1379940Z             },
2026-06-20T03:13:21.1380044Z             {
2026-06-20T03:13:21.1380177Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T03:13:21.1380278Z               "line": 470
2026-06-20T03:13:21.1380402Z             },
2026-06-20T03:13:21.1380512Z             {
2026-06-20T03:13:21.1380645Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T03:13:21.1380755Z               "line": 499
2026-06-20T03:13:21.1380860Z             },
2026-06-20T03:13:21.1380960Z             {
2026-06-20T03:13:21.1381097Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T03:13:21.1381204Z               "line": 526
2026-06-20T03:13:21.1381313Z             }
2026-06-20T03:13:21.1381417Z           ]
2026-06-20T03:13:21.1381524Z         }
2026-06-20T03:13:21.1381628Z       }
2026-06-20T03:13:21.1381736Z     },
2026-06-20T03:13:21.1381836Z     {
2026-06-20T03:13:21.1381973Z       "id": "REQ-HAZARD-SINGLE-PATH-SOURCE",
2026-06-20T03:13:21.1382196Z       "title": "Single path/registry source of truth; no layout ambiguity (6.1)",
2026-06-20T03:13:21.1382316Z       "requiredStages": [
2026-06-20T03:13:21.1382425Z         "impl",
2026-06-20T03:13:21.1382531Z         "unit"
2026-06-20T03:13:21.1382626Z       ],
2026-06-20T03:13:21.1382730Z       "stages": {
2026-06-20T03:13:21.1382836Z         "doc": {
2026-06-20T03:13:21.1382955Z           "complete": false,
2026-06-20T03:13:21.1383068Z           "evidence": []
2026-06-20T03:13:21.1383170Z         },
2026-06-20T03:13:21.1383279Z         "impl": {
2026-06-20T03:13:21.1383393Z           "complete": true,
2026-06-20T03:13:21.1383503Z           "evidence": [
2026-06-20T03:13:21.1383602Z             {
2026-06-20T03:13:21.1383879Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T03:13:21.1383989Z               "line": 62
2026-06-20T03:13:21.1384189Z             },
2026-06-20T03:13:21.1384293Z             {
2026-06-20T03:13:21.1384446Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T03:13:21.1384562Z               "line": 71
2026-06-20T03:13:21.1384666Z             },
2026-06-20T03:13:21.1384778Z             {
2026-06-20T03:13:21.1384929Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T03:13:21.1385049Z               "line": 80
2026-06-20T03:13:21.1385154Z             },
2026-06-20T03:13:21.1385249Z             {
2026-06-20T03:13:21.1385403Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T03:13:21.1385512Z               "line": 88
2026-06-20T03:13:21.1385621Z             },
2026-06-20T03:13:21.1385717Z             {
2026-06-20T03:13:21.1385855Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1385969Z               "line": 33
2026-06-20T03:13:21.1386084Z             },
2026-06-20T03:13:21.1386188Z             {
2026-06-20T03:13:21.1386342Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1386455Z               "line": 65
2026-06-20T03:13:21.1386556Z             },
2026-06-20T03:13:21.1386657Z             {
2026-06-20T03:13:21.1386803Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1386904Z               "line": 74
2026-06-20T03:13:21.1387010Z             },
2026-06-20T03:13:21.1387112Z             {
2026-06-20T03:13:21.1387256Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1387361Z               "line": 93
2026-06-20T03:13:21.1387465Z             },
2026-06-20T03:13:21.1387570Z             {
2026-06-20T03:13:21.1387714Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1387818Z               "line": 102
2026-06-20T03:13:21.1387914Z             },
2026-06-20T03:13:21.1388019Z             {
2026-06-20T03:13:21.1388166Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1388282Z               "line": 111
2026-06-20T03:13:21.1388400Z             },
2026-06-20T03:13:21.1388504Z             {
2026-06-20T03:13:21.1388653Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1388757Z               "line": 122
2026-06-20T03:13:21.1388858Z             },
2026-06-20T03:13:21.1389044Z             {
2026-06-20T03:13:21.1389173Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1389282Z               "line": 140
2026-06-20T03:13:21.1389382Z             },
2026-06-20T03:13:21.1389486Z             {
2026-06-20T03:13:21.1389628Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1389746Z               "line": 149
2026-06-20T03:13:21.1389851Z             },
2026-06-20T03:13:21.1389952Z             {
2026-06-20T03:13:21.1390098Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1390209Z               "line": 158
2026-06-20T03:13:21.1390313Z             },
2026-06-20T03:13:21.1390418Z             {
2026-06-20T03:13:21.1390562Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1390680Z               "line": 169
2026-06-20T03:13:21.1390776Z             },
2026-06-20T03:13:21.1390881Z             {
2026-06-20T03:13:21.1391014Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1391130Z               "line": 177
2026-06-20T03:13:21.1391234Z             },
2026-06-20T03:13:21.1391339Z             {
2026-06-20T03:13:21.1391482Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1391591Z               "line": 186
2026-06-20T03:13:21.1391696Z             },
2026-06-20T03:13:21.1391788Z             {
2026-06-20T03:13:21.1391929Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1392040Z               "line": 195
2026-06-20T03:13:21.1392136Z             },
2026-06-20T03:13:21.1392244Z             {
2026-06-20T03:13:21.1392382Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1392603Z               "line": 204
2026-06-20T03:13:21.1392805Z             },
2026-06-20T03:13:21.1392909Z             {
2026-06-20T03:13:21.1393053Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1393167Z               "line": 216
2026-06-20T03:13:21.1393275Z             },
2026-06-20T03:13:21.1393372Z             {
2026-06-20T03:13:21.1393520Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1393624Z               "line": 223
2026-06-20T03:13:21.1393725Z             },
2026-06-20T03:13:21.1393829Z             {
2026-06-20T03:13:21.1393967Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1394083Z               "line": 232
2026-06-20T03:13:21.1394187Z             },
2026-06-20T03:13:21.1394287Z             {
2026-06-20T03:13:21.1394430Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1394554Z               "line": 239
2026-06-20T03:13:21.1394655Z             },
2026-06-20T03:13:21.1394755Z             {
2026-06-20T03:13:21.1394896Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1395015Z               "line": 306
2026-06-20T03:13:21.1395123Z             },
2026-06-20T03:13:21.1395223Z             {
2026-06-20T03:13:21.1395362Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1395480Z               "line": 318
2026-06-20T03:13:21.1395580Z             },
2026-06-20T03:13:21.1395681Z             {
2026-06-20T03:13:21.1395813Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1395924Z               "line": 405
2026-06-20T03:13:21.1396033Z             }
2026-06-20T03:13:21.1396138Z           ]
2026-06-20T03:13:21.1396244Z         },
2026-06-20T03:13:21.1396348Z         "int": {
2026-06-20T03:13:21.1396491Z           "complete": false,
2026-06-20T03:13:21.1396607Z           "evidence": []
2026-06-20T03:13:21.1396721Z         },
2026-06-20T03:13:21.1396825Z         "unit": {
2026-06-20T03:13:21.1396950Z           "complete": true,
2026-06-20T03:13:21.1397064Z           "evidence": [
2026-06-20T03:13:21.1397164Z             {
2026-06-20T03:13:21.1397312Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1397421Z               "line": 487
2026-06-20T03:13:21.1397537Z             },
2026-06-20T03:13:21.1397640Z             {
2026-06-20T03:13:21.1397791Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1397898Z               "line": 528
2026-06-20T03:13:21.1398002Z             },
2026-06-20T03:13:21.1398106Z             {
2026-06-20T03:13:21.1398241Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1398354Z               "line": 541
2026-06-20T03:13:21.1398450Z             },
2026-06-20T03:13:21.1398560Z             {
2026-06-20T03:13:21.1398702Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1398808Z               "line": 627
2026-06-20T03:13:21.1398917Z             }
2026-06-20T03:13:21.1399099Z           ]
2026-06-20T03:13:21.1399208Z         }
2026-06-20T03:13:21.1399313Z       }
2026-06-20T03:13:21.1399424Z     },
2026-06-20T03:13:21.1399533Z     {
2026-06-20T03:13:21.1399661Z       "id": "REQ-HAZARD-SOFT-CLEANUP",
2026-06-20T03:13:21.1399880Z       "title": "Soft-cleanup preserves state, removes only the ready marker (6.2)",
2026-06-20T03:13:21.1399998Z       "requiredStages": [
2026-06-20T03:13:21.1400108Z         "impl",
2026-06-20T03:13:21.1400211Z         "unit"
2026-06-20T03:13:21.1400315Z       ],
2026-06-20T03:13:21.1400431Z       "stages": {
2026-06-20T03:13:21.1400536Z         "doc": {
2026-06-20T03:13:21.1400658Z           "complete": false,
2026-06-20T03:13:21.1400774Z           "evidence": []
2026-06-20T03:13:21.1400874Z         },
2026-06-20T03:13:21.1400978Z         "impl": {
2026-06-20T03:13:21.1401098Z           "complete": true,
2026-06-20T03:13:21.1401212Z           "evidence": [
2026-06-20T03:13:21.1401317Z             {
2026-06-20T03:13:21.1401579Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-20T03:13:21.1401695Z               "line": 175
2026-06-20T03:13:21.1401918Z             },
2026-06-20T03:13:21.1402019Z             {
2026-06-20T03:13:21.1402170Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.1402281Z               "line": 171
2026-06-20T03:13:21.1402386Z             }
2026-06-20T03:13:21.1402495Z           ]
2026-06-20T03:13:21.1402596Z         },
2026-06-20T03:13:21.1402696Z         "int": {
2026-06-20T03:13:21.1402818Z           "complete": false,
2026-06-20T03:13:21.1402937Z           "evidence": []
2026-06-20T03:13:21.1403046Z         },
2026-06-20T03:13:21.1403150Z         "unit": {
2026-06-20T03:13:21.1403269Z           "complete": true,
2026-06-20T03:13:21.1403370Z           "evidence": [
2026-06-20T03:13:21.1403478Z             {
2026-06-20T03:13:21.1403613Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-20T03:13:21.1403722Z               "line": 297
2026-06-20T03:13:21.1403836Z             },
2026-06-20T03:13:21.1403938Z             {
2026-06-20T03:13:21.1404084Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.1404213Z               "line": 836
2026-06-20T03:13:21.1404318Z             },
2026-06-20T03:13:21.1404423Z             {
2026-06-20T03:13:21.1404577Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.1404680Z               "line": 849
2026-06-20T03:13:21.1404785Z             }
2026-06-20T03:13:21.1404887Z           ]
2026-06-20T03:13:21.1404981Z         }
2026-06-20T03:13:21.1405086Z       }
2026-06-20T03:13:21.1405187Z     },
2026-06-20T03:13:21.1405291Z     {
2026-06-20T03:13:21.1405423Z       "id": "REQ-HAZARD-STALE-INDEX-LOCK",
2026-06-20T03:13:21.1405580Z       "title": "Sweep stale lockfiles on daemon boot (1.3)",
2026-06-20T03:13:21.1405707Z       "requiredStages": [
2026-06-20T03:13:21.1405816Z         "impl",
2026-06-20T03:13:21.1405922Z         "unit"
2026-06-20T03:13:21.1406027Z       ],
2026-06-20T03:13:21.1406145Z       "stages": {
2026-06-20T03:13:21.1406260Z         "doc": {
2026-06-20T03:13:21.1406379Z           "complete": false,
2026-06-20T03:13:21.1406499Z           "evidence": []
2026-06-20T03:13:21.1406608Z         },
2026-06-20T03:13:21.1406726Z         "impl": {
2026-06-20T03:13:21.1406842Z           "complete": true,
2026-06-20T03:13:21.1406961Z           "evidence": [
2026-06-20T03:13:21.1407061Z             {
2026-06-20T03:13:21.1407209Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.1407319Z               "line": 116
2026-06-20T03:13:21.1407419Z             },
2026-06-20T03:13:21.1407529Z             {
2026-06-20T03:13:21.1407676Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T03:13:21.1407796Z               "line": 507
2026-06-20T03:13:21.1407895Z             }
2026-06-20T03:13:21.1408000Z           ]
2026-06-20T03:13:21.1408111Z         },
2026-06-20T03:13:21.1408205Z         "int": {
2026-06-20T03:13:21.1408333Z           "complete": false,
2026-06-20T03:13:21.1408443Z           "evidence": []
2026-06-20T03:13:21.1408548Z         },
2026-06-20T03:13:21.1408662Z         "unit": {
2026-06-20T03:13:21.1408782Z           "complete": true,
2026-06-20T03:13:21.1408896Z           "evidence": [
2026-06-20T03:13:21.1409068Z             {
2026-06-20T03:13:21.1409220Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T03:13:21.1409325Z               "line": 541
2026-06-20T03:13:21.1409440Z             }
2026-06-20T03:13:21.1409549Z           ]
2026-06-20T03:13:21.1409654Z         }
2026-06-20T03:13:21.1409755Z       }
2026-06-20T03:13:21.1409860Z     },
2026-06-20T03:13:21.1409964Z     {
2026-06-20T03:13:21.1410107Z       "id": "REQ-HAZARD-STALE-SIGNOFF-SENTINEL",
2026-06-20T03:13:21.1410308Z       "title": "Stale signoff sentinel does not kill a fresh start (3.2)",
2026-06-20T03:13:21.1410431Z       "requiredStages": [
2026-06-20T03:13:21.1410535Z         "impl",
2026-06-20T03:13:21.1410645Z         "unit"
2026-06-20T03:13:21.1410857Z       ],
2026-06-20T03:13:21.1410967Z       "stages": {
2026-06-20T03:13:21.1411073Z         "doc": {
2026-06-20T03:13:21.1411310Z           "complete": false,
2026-06-20T03:13:21.1411411Z           "evidence": []
2026-06-20T03:13:21.1411515Z         },
2026-06-20T03:13:21.1411621Z         "impl": {
2026-06-20T03:13:21.1411735Z           "complete": true,
2026-06-20T03:13:21.1411848Z           "evidence": [
2026-06-20T03:13:21.1411950Z             {
2026-06-20T03:13:21.1412101Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.1412221Z               "line": 552
2026-06-20T03:13:21.1412312Z             },
2026-06-20T03:13:21.1412412Z             {
2026-06-20T03:13:21.1412555Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-20T03:13:21.1412669Z               "line": 28
2026-06-20T03:13:21.1412769Z             }
2026-06-20T03:13:21.1412870Z           ]
2026-06-20T03:13:21.1412974Z         },
2026-06-20T03:13:21.1413079Z         "int": {
2026-06-20T03:13:21.1413209Z           "complete": false,
2026-06-20T03:13:21.1413313Z           "evidence": []
2026-06-20T03:13:21.1413421Z         },
2026-06-20T03:13:21.1413536Z         "unit": {
2026-06-20T03:13:21.1413653Z           "complete": true,
2026-06-20T03:13:21.1413767Z           "evidence": [
2026-06-20T03:13:21.1413872Z             {
2026-06-20T03:13:21.1414015Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-20T03:13:21.1414119Z               "line": 229
2026-06-20T03:13:21.1414230Z             }
2026-06-20T03:13:21.1414315Z           ]
2026-06-20T03:13:21.1414429Z         }
2026-06-20T03:13:21.1414535Z       }
2026-06-20T03:13:21.1414630Z     },
2026-06-20T03:13:21.1414739Z     {
2026-06-20T03:13:21.1414874Z       "id": "REQ-HAZARD-STDIN-SESSION-ID",
2026-06-20T03:13:21.1415045Z       "title": "Stdin session_id precedence over env (2.2)",
2026-06-20T03:13:21.1415151Z       "requiredStages": [],
2026-06-20T03:13:21.1415259Z       "stages": {
2026-06-20T03:13:21.1415365Z         "doc": {
2026-06-20T03:13:21.1415480Z           "complete": false,
2026-06-20T03:13:21.1415602Z           "evidence": []
2026-06-20T03:13:21.1415703Z         },
2026-06-20T03:13:21.1415805Z         "impl": {
2026-06-20T03:13:21.1415931Z           "complete": false,
2026-06-20T03:13:21.1416050Z           "evidence": []
2026-06-20T03:13:21.1416159Z         },
2026-06-20T03:13:21.1416262Z         "int": {
2026-06-20T03:13:21.1416377Z           "complete": false,
2026-06-20T03:13:21.1416478Z           "evidence": []
2026-06-20T03:13:21.1416587Z         },
2026-06-20T03:13:21.1416682Z         "unit": {
2026-06-20T03:13:21.1416807Z           "complete": false,
2026-06-20T03:13:21.1416939Z           "evidence": []
2026-06-20T03:13:21.1417040Z         }
2026-06-20T03:13:21.1417150Z       }
2026-06-20T03:13:21.1417254Z     },
2026-06-20T03:13:21.1417360Z     {
2026-06-20T03:13:21.1417502Z       "id": "REQ-HAZARD-SUBPROCESS-TIMEOUT",
2026-06-20T03:13:21.1417679Z       "title": "Every harness/git subprocess has a timeout (5.3)",
2026-06-20T03:13:21.1417798Z       "requiredStages": [
2026-06-20T03:13:21.1417903Z         "impl",
2026-06-20T03:13:21.1418014Z         "unit"
2026-06-20T03:13:21.1418117Z       ],
2026-06-20T03:13:21.1418227Z       "stages": {
2026-06-20T03:13:21.1418333Z         "doc": {
2026-06-20T03:13:21.1418455Z           "complete": false,
2026-06-20T03:13:21.1418565Z           "evidence": []
2026-06-20T03:13:21.1418667Z         },
2026-06-20T03:13:21.1418779Z         "impl": {
2026-06-20T03:13:21.1418893Z           "complete": true,
2026-06-20T03:13:21.1419090Z           "evidence": [
2026-06-20T03:13:21.1419193Z             {
2026-06-20T03:13:21.1419338Z               "path": "crates/spt-live/src/turn.rs",
2026-06-20T03:13:21.1419442Z               "line": 19
2026-06-20T03:13:21.1419546Z             },
2026-06-20T03:13:21.1419657Z             {
2026-06-20T03:13:21.1419809Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.1419929Z               "line": 463
2026-06-20T03:13:21.1420029Z             },
2026-06-20T03:13:21.1420239Z             {
2026-06-20T03:13:21.1420395Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.1420606Z               "line": 499
2026-06-20T03:13:21.1420714Z             },
2026-06-20T03:13:21.1420815Z             {
2026-06-20T03:13:21.1420959Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.1421062Z               "line": 547
2026-06-20T03:13:21.1421171Z             },
2026-06-20T03:13:21.1421272Z             {
2026-06-20T03:13:21.1421412Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-20T03:13:21.1421522Z               "line": 15
2026-06-20T03:13:21.1421628Z             },
2026-06-20T03:13:21.1421731Z             {
2026-06-20T03:13:21.1421875Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-20T03:13:21.1421985Z               "line": 48
2026-06-20T03:13:21.1422089Z             },
2026-06-20T03:13:21.1422190Z             {
2026-06-20T03:13:21.1422328Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-20T03:13:21.1422433Z               "line": 119
2026-06-20T03:13:21.1422539Z             },
2026-06-20T03:13:21.1422657Z             {
2026-06-20T03:13:21.1422791Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1422910Z               "line": 3948
2026-06-20T03:13:21.1423010Z             }
2026-06-20T03:13:21.1423111Z           ]
2026-06-20T03:13:21.1423215Z         },
2026-06-20T03:13:21.1423320Z         "int": {
2026-06-20T03:13:21.1423445Z           "complete": false,
2026-06-20T03:13:21.1423558Z           "evidence": []
2026-06-20T03:13:21.1423668Z         },
2026-06-20T03:13:21.1423765Z         "unit": {
2026-06-20T03:13:21.1423887Z           "complete": true,
2026-06-20T03:13:21.1423996Z           "evidence": [
2026-06-20T03:13:21.1424105Z             {
2026-06-20T03:13:21.1424260Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.1424375Z               "line": 765
2026-06-20T03:13:21.1424480Z             },
2026-06-20T03:13:21.1424589Z             {
2026-06-20T03:13:21.1424738Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-20T03:13:21.1424858Z               "line": 165
2026-06-20T03:13:21.1424961Z             },
2026-06-20T03:13:21.1425072Z             {
2026-06-20T03:13:21.1425214Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-20T03:13:21.1425333Z               "line": 175
2026-06-20T03:13:21.1425430Z             }
2026-06-20T03:13:21.1425534Z           ]
2026-06-20T03:13:21.1425638Z         }
2026-06-20T03:13:21.1425735Z       }
2026-06-20T03:13:21.1425843Z     },
2026-06-20T03:13:21.1425944Z     {
2026-06-20T03:13:21.1426074Z       "id": "REQ-HAZARD-SUDO-SECURE-PATH",
2026-06-20T03:13:21.1426980Z       "title": "Elevation guidance on Unix names the binary's ABSOLUTE path under sudo (a user-local install ~/.local/bin · ~/.cargo/bin is not on sudo's secure_path, so bare `sudo spt` dies 'command not found'); gated commands auto-elevate on an interactive TTY, else print the runnable hint (5.10)",
2026-06-20T03:13:21.1427109Z       "requiredStages": [
2026-06-20T03:13:21.1427227Z         "impl",
2026-06-20T03:13:21.1427333Z         "unit"
2026-06-20T03:13:21.1427442Z       ],
2026-06-20T03:13:21.1427547Z       "stages": {
2026-06-20T03:13:21.1427658Z         "doc": {
2026-06-20T03:13:21.1427771Z           "complete": false,
2026-06-20T03:13:21.1427886Z           "evidence": []
2026-06-20T03:13:21.1427991Z         },
2026-06-20T03:13:21.1430903Z         "impl": {
2026-06-20T03:13:21.1431027Z           "complete": true,
2026-06-20T03:13:21.1431124Z           "evidence": [
2026-06-20T03:13:21.1431232Z             {
2026-06-20T03:13:21.1431385Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T03:13:21.1431509Z               "line": 192
2026-06-20T03:13:21.1431604Z             },
2026-06-20T03:13:21.1431712Z             {
2026-06-20T03:13:21.1431855Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T03:13:21.1431963Z               "line": 279
2026-06-20T03:13:21.1432073Z             }
2026-06-20T03:13:21.1432315Z           ]
2026-06-20T03:13:21.1432426Z         },
2026-06-20T03:13:21.1432526Z         "int": {
2026-06-20T03:13:21.1432746Z           "complete": false,
2026-06-20T03:13:21.1432865Z           "evidence": []
2026-06-20T03:13:21.1432959Z         },
2026-06-20T03:13:21.1433066Z         "unit": {
2026-06-20T03:13:21.1433184Z           "complete": true,
2026-06-20T03:13:21.1433293Z           "evidence": [
2026-06-20T03:13:21.1433394Z             {
2026-06-20T03:13:21.1433532Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T03:13:21.1433647Z               "line": 470
2026-06-20T03:13:21.1433747Z             },
2026-06-20T03:13:21.1433856Z             {
2026-06-20T03:13:21.1433991Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T03:13:21.1434100Z               "line": 526
2026-06-20T03:13:21.1434205Z             }
2026-06-20T03:13:21.1434310Z           ]
2026-06-20T03:13:21.1434415Z         }
2026-06-20T03:13:21.1434522Z       }
2026-06-20T03:13:21.1434642Z     },
2026-06-20T03:13:21.1434732Z     {
2026-06-20T03:13:21.1434877Z       "id": "REQ-HAZARD-TEMPLATE-ARGV-FILL",
2026-06-20T03:13:21.1438829Z       "title": "Command-template substitution fills argv ELEMENTS, not a re-tokenized string: spt-core currently `fill_template`s {key} values INTO the command STRING and THEN `tokenize`s the filled string (runtime.rs:94/122), so a multi-word {key} value whitespace-SPLITS into multiple argv tokens unless the adapter hand-quotes the placeholder, and a value containing a `\"` (or `;`) injects/breaks tokenization (shell-injection-adjacent). A filled value MUST become exactly ONE argv element regardless of spaces/quotes in the value. Fix: tokenize the TEMPLATE into argv FIRST, then `fill_template` EACH token, so a `{key}` slot resolves to a single element and the value never participates in tokenization (no whitespace-split, no quote/semicolon injection); preserve the missing-key / empty-command errors and `{{`/`}}` non-interpretation. perri's F-009 (v0.8.1 dogfood, argv-capture-confirmed): a multi-word `{psyche_prompt}` = \"PSYCHE REVIVAL time: epoch-ms:… incoming event: (none)\" arrived as argv[6..12] (7 stray tokens), the harness runner strict-parsed `--prompt` against the 2nd word, exited 2 within ~1s → phantom hosted perch. Applies to EVERY [session.<role>] template (psyche_init, extractor, notif, …); digest survives today only because its fills ({session_id}/{source}) are single-token.",
2026-06-20T03:13:21.1439061Z       "requiredStages": [
2026-06-20T03:13:21.1439167Z         "impl",
2026-06-20T03:13:21.1439280Z         "unit",
2026-06-20T03:13:21.1439371Z         "int"
2026-06-20T03:13:21.1439463Z       ],
2026-06-20T03:13:21.1439566Z       "stages": {
2026-06-20T03:13:21.1439662Z         "doc": {
2026-06-20T03:13:21.1439773Z           "complete": false,
2026-06-20T03:13:21.1439886Z           "evidence": []
2026-06-20T03:13:21.1439990Z         },
2026-06-20T03:13:21.1440095Z         "impl": {
2026-06-20T03:13:21.1440215Z           "complete": true,
2026-06-20T03:13:21.1440357Z           "evidence": [
2026-06-20T03:13:21.1440458Z             {
2026-06-20T03:13:21.1440624Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-20T03:13:21.1440754Z               "line": 116
2026-06-20T03:13:21.1440863Z             },
2026-06-20T03:13:21.1440958Z             {
2026-06-20T03:13:21.1441111Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T03:13:21.1441229Z               "line": 132
2026-06-20T03:13:21.1441325Z             },
2026-06-20T03:13:21.1441431Z             {
2026-06-20T03:13:21.1441578Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T03:13:21.1441693Z               "line": 434
2026-06-20T03:13:21.1441792Z             },
2026-06-20T03:13:21.1441902Z             {
2026-06-20T03:13:21.1442047Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.1442154Z               "line": 139
2026-06-20T03:13:21.1442258Z             },
2026-06-20T03:13:21.1442359Z             {
2026-06-20T03:13:21.1442647Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.1442753Z               "line": 326
2026-06-20T03:13:21.1442952Z             },
2026-06-20T03:13:21.1443058Z             {
2026-06-20T03:13:21.1443209Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.1443330Z               "line": 555
2026-06-20T03:13:21.1443434Z             }
2026-06-20T03:13:21.1443529Z           ]
2026-06-20T03:13:21.1443631Z         },
2026-06-20T03:13:21.1443740Z         "int": {
2026-06-20T03:13:21.1443868Z           "complete": true,
2026-06-20T03:13:21.1443983Z           "evidence": [
2026-06-20T03:13:21.1444092Z             {
2026-06-20T03:13:21.1444270Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-20T03:13:21.1444387Z               "line": 32
2026-06-20T03:13:21.1444488Z             }
2026-06-20T03:13:21.1444594Z           ]
2026-06-20T03:13:21.1444697Z         },
2026-06-20T03:13:21.1444798Z         "unit": {
2026-06-20T03:13:21.1444928Z           "complete": true,
2026-06-20T03:13:21.1445041Z           "evidence": [
2026-06-20T03:13:21.1445149Z             {
2026-06-20T03:13:21.1445301Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.1445405Z               "line": 625
2026-06-20T03:13:21.1445514Z             },
2026-06-20T03:13:21.1445616Z             {
2026-06-20T03:13:21.1445771Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.1445877Z               "line": 646
2026-06-20T03:13:21.1445982Z             },
2026-06-20T03:13:21.1446086Z             {
2026-06-20T03:13:21.1446235Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.1446344Z               "line": 662
2026-06-20T03:13:21.1446445Z             },
2026-06-20T03:13:21.1446555Z             {
2026-06-20T03:13:21.1446688Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.1446798Z               "line": 680
2026-06-20T03:13:21.1446902Z             },
2026-06-20T03:13:21.1447017Z             {
2026-06-20T03:13:21.1447165Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.1447283Z               "line": 704
2026-06-20T03:13:21.1447389Z             }
2026-06-20T03:13:21.1447485Z           ]
2026-06-20T03:13:21.1447593Z         }
2026-06-20T03:13:21.1447697Z       }
2026-06-20T03:13:21.1447802Z     },
2026-06-20T03:13:21.1447905Z     {
2026-06-20T03:13:21.1448038Z       "id": "REQ-HAZARD-UNC-PATH-STRIP",
2026-06-20T03:13:21.1448230Z       "title": "Strip Windows UNC prefix on serialized paths (5.4)",
2026-06-20T03:13:21.1448338Z       "requiredStages": [
2026-06-20T03:13:21.1448449Z         "impl",
2026-06-20T03:13:21.1448554Z         "unit"
2026-06-20T03:13:21.1448663Z       ],
2026-06-20T03:13:21.1448769Z       "stages": {
2026-06-20T03:13:21.1448873Z         "doc": {
2026-06-20T03:13:21.1449060Z           "complete": false,
2026-06-20T03:13:21.1449159Z           "evidence": []
2026-06-20T03:13:21.1449268Z         },
2026-06-20T03:13:21.1449370Z         "impl": {
2026-06-20T03:13:21.1449493Z           "complete": true,
2026-06-20T03:13:21.1449602Z           "evidence": [
2026-06-20T03:13:21.1449708Z             {
2026-06-20T03:13:21.1449850Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-20T03:13:21.1449956Z               "line": 35
2026-06-20T03:13:21.1450057Z             }
2026-06-20T03:13:21.1450160Z           ]
2026-06-20T03:13:21.1450266Z         },
2026-06-20T03:13:21.1450371Z         "int": {
2026-06-20T03:13:21.1450484Z           "complete": false,
2026-06-20T03:13:21.1450602Z           "evidence": []
2026-06-20T03:13:21.1450694Z         },
2026-06-20T03:13:21.1450799Z         "unit": {
2026-06-20T03:13:21.1450912Z           "complete": true,
2026-06-20T03:13:21.1451033Z           "evidence": [
2026-06-20T03:13:21.1451137Z             {
2026-06-20T03:13:21.1451285Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-20T03:13:21.1451399Z               "line": 220
2026-06-20T03:13:21.1451503Z             }
2026-06-20T03:13:21.1451718Z           ]
2026-06-20T03:13:21.1451813Z         }
2026-06-20T03:13:21.1451915Z       }
2026-06-20T03:13:21.1452105Z     },
2026-06-20T03:13:21.1452205Z     {
2026-06-20T03:13:21.1452353Z       "id": "REQ-HAZARD-UNHOST-PSYCHE-REAP",
2026-06-20T03:13:21.1455540Z       "title": "On un-host, the detached `{id}-psyche` HARNESS PROCESS is reaped — not just its in-brain pulse-driver thread. Today stop_host (livehost.rs:203) trips the HostedLife stop flag + JOINS the driver thread, but the Psyche is a detached harness process (spawn_psyche → ManifestRuntime detached spawn, runtime.rs:341-356; its pid is untracked in HostedLife though stamped on the `{id}-psyche` perch, where residency-confirm already reads it). So endpoint-stop / mid-life agent-death / a B2/B5 offline-then-unhost leaves the psyche process ORPHANED, alive until the next daemon-stop (where Breap's job/group reaps the whole brain subtree). The Psyche STAYS a harness process by design (CONTEXT.md 97/203/251 — headless harness session, its own perch) — the fix does NOT move it in-brain; it SCOPED-kills the `{id}-psyche` pid on un-host (never machine-wide — shared box). Track the pid in HostedLife at host_one (cleanest) or read the `{id}-psyche` perch pid at stop_host. Composes with H3 (endpoint stop → offline → reconcile un-host → reap) and B2/B5 (the offline arms that trigger un-host). (v0.12.0)",
2026-06-20T03:13:21.1455724Z       "requiredStages": [
2026-06-20T03:13:21.1455834Z         "impl",
2026-06-20T03:13:21.1455936Z         "unit",
2026-06-20T03:13:21.1456041Z         "int"
2026-06-20T03:13:21.1456142Z       ],
2026-06-20T03:13:21.1456241Z       "stages": {
2026-06-20T03:13:21.1456360Z         "doc": {
2026-06-20T03:13:21.1456490Z           "complete": false,
2026-06-20T03:13:21.1456613Z           "evidence": []
2026-06-20T03:13:21.1456719Z         },
2026-06-20T03:13:21.1456828Z         "impl": {
2026-06-20T03:13:21.1456942Z           "complete": true,
2026-06-20T03:13:21.1457048Z           "evidence": [
2026-06-20T03:13:21.1457176Z             {
2026-06-20T03:13:21.1457329Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.1457462Z               "line": 202
2026-06-20T03:13:21.1457567Z             },
2026-06-20T03:13:21.1457668Z             {
2026-06-20T03:13:21.1457819Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-20T03:13:21.1457934Z               "line": 107
2026-06-20T03:13:21.1458041Z             },
2026-06-20T03:13:21.1458144Z             {
2026-06-20T03:13:21.1458291Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-20T03:13:21.1458405Z               "line": 138
2026-06-20T03:13:21.1458503Z             },
2026-06-20T03:13:21.1458613Z             {
2026-06-20T03:13:21.1458757Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.1458875Z               "line": 209
2026-06-20T03:13:21.1459028Z             },
2026-06-20T03:13:21.1459133Z             {
2026-06-20T03:13:21.1459286Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.1459405Z               "line": 246
2026-06-20T03:13:21.1459514Z             },
2026-06-20T03:13:21.1459620Z             {
2026-06-20T03:13:21.1459762Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.1459872Z               "line": 379
2026-06-20T03:13:21.1459968Z             }
2026-06-20T03:13:21.1460077Z           ]
2026-06-20T03:13:21.1460177Z         },
2026-06-20T03:13:21.1460287Z         "int": {
2026-06-20T03:13:21.1460396Z           "complete": true,
2026-06-20T03:13:21.1460501Z           "evidence": [
2026-06-20T03:13:21.1460607Z             {
2026-06-20T03:13:21.1460778Z               "path": "crates/spt/tests/unhost_psyche_reap_e2e.rs",
2026-06-20T03:13:21.1460889Z               "line": 17
2026-06-20T03:13:21.1460992Z             }
2026-06-20T03:13:21.1461086Z           ]
2026-06-20T03:13:21.1461186Z         },
2026-06-20T03:13:21.1461302Z         "unit": {
2026-06-20T03:13:21.1461415Z           "complete": true,
2026-06-20T03:13:21.1461531Z           "evidence": [
2026-06-20T03:13:21.1461749Z             {
2026-06-20T03:13:21.1461888Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.1462097Z               "line": 982
2026-06-20T03:13:21.1462203Z             }
2026-06-20T03:13:21.1462307Z           ]
2026-06-20T03:13:21.1462407Z         }
2026-06-20T03:13:21.1462513Z       }
2026-06-20T03:13:21.1462613Z     },
2026-06-20T03:13:21.1462708Z     {
2026-06-20T03:13:21.1462837Z       "id": "REQ-HAZARD-UPDATE-ROLLBACK",
2026-06-20T03:13:21.1463129Z       "title": "Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)",
2026-06-20T03:13:21.1463242Z       "requiredStages": [
2026-06-20T03:13:21.1463346Z         "impl",
2026-06-20T03:13:21.1463451Z         "unit"
2026-06-20T03:13:21.1463555Z       ],
2026-06-20T03:13:21.1463663Z       "stages": {
2026-06-20T03:13:21.1463773Z         "doc": {
2026-06-20T03:13:21.1463888Z           "complete": false,
2026-06-20T03:13:21.1464001Z           "evidence": []
2026-06-20T03:13:21.1464106Z         },
2026-06-20T03:13:21.1464207Z         "impl": {
2026-06-20T03:13:21.1464316Z           "complete": true,
2026-06-20T03:13:21.1464431Z           "evidence": [
2026-06-20T03:13:21.1464531Z             {
2026-06-20T03:13:21.1464693Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T03:13:21.1464803Z               "line": 405
2026-06-20T03:13:21.1464908Z             },
2026-06-20T03:13:21.1465017Z             {
2026-06-20T03:13:21.1465170Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.1465274Z               "line": 409
2026-06-20T03:13:21.1465380Z             },
2026-06-20T03:13:21.1465480Z             {
2026-06-20T03:13:21.1465633Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-20T03:13:21.1465748Z               "line": 156
2026-06-20T03:13:21.1465856Z             }
2026-06-20T03:13:21.1465962Z           ]
2026-06-20T03:13:21.1466068Z         },
2026-06-20T03:13:21.1466175Z         "int": {
2026-06-20T03:13:21.1466294Z           "complete": false,
2026-06-20T03:13:21.1466408Z           "evidence": []
2026-06-20T03:13:21.1466520Z         },
2026-06-20T03:13:21.1466635Z         "unit": {
2026-06-20T03:13:21.1466755Z           "complete": true,
2026-06-20T03:13:21.1466854Z           "evidence": [
2026-06-20T03:13:21.1466955Z             {
2026-06-20T03:13:21.1467103Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.1467216Z               "line": 865
2026-06-20T03:13:21.1467318Z             },
2026-06-20T03:13:21.1467428Z             {
2026-06-20T03:13:21.1467574Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.1467689Z               "line": 879
2026-06-20T03:13:21.1467798Z             },
2026-06-20T03:13:21.1467889Z             {
2026-06-20T03:13:21.1468037Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.1468151Z               "line": 898
2026-06-20T03:13:21.1468257Z             },
2026-06-20T03:13:21.1468361Z             {
2026-06-20T03:13:21.1468509Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.1468629Z               "line": 915
2026-06-20T03:13:21.1468723Z             },
2026-06-20T03:13:21.1468817Z             {
2026-06-20T03:13:21.1469044Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-20T03:13:21.1469148Z               "line": 441
2026-06-20T03:13:21.1469250Z             }
2026-06-20T03:13:21.1469350Z           ]
2026-06-20T03:13:21.1469459Z         }
2026-06-20T03:13:21.1469556Z       }
2026-06-20T03:13:21.1469660Z     },
2026-06-20T03:13:21.1469764Z     {
2026-06-20T03:13:21.1469903Z       "id": "REQ-HAZARD-VIEWER-CLOSE-DETACH",
2026-06-20T03:13:21.1479695Z       "title": "A VIEW is independent from the endpoint: closing the tab/window where `spt endpoint run` was invoked must detach ONLY the `spt rc` attach pump — the daemon-hosted harness keeps running and stays re-attachable via `spt rc <id>`. ROOT (Windows, v0.12.0 real-harness defect): the daemon never breaks away from the launching terminal's Job Object. Windows Terminal / VS Code place the launched shell AND every descendant into a Job Object with JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; closing the tab drops the terminal's last job handle → the OS terminates every process still in that job. A child escapes only with CREATE_BREAKAWAY_FROM_JOB — used NOWHERE in the tree. Both daemon spawn paths (daemon.rs:707 detached_no_inherit = DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP|CREATE_NO_WINDOW; deelevate.rs:519 elevated = CREATE_NEW_CONSOLE|...) drop the CONSOLE but NOT job membership, so the daemon's freshly broker-spawned ConPTY harness subtree is reaped on tab-close. The ConPTY/pseudoconsole isolation itself is CORRECT (portable-pty builds the pseudoconsole in the daemon; no console signal / handle leak) — the leaking lifetime binding is the Job Object, not the console. FIX: add CREATE_BREAKAWAY_FROM_JOB to both daemon spawn paths AND pin each broker-spawned harness into a DAEMON-OWNED Job Object (mirror reap.rs/Breap) as backstop (survives even where a terminal sets SILENT_BREAKAWAY_OK=false). Unix: the daemon's own session detachment (new session, no controlling terminal) already keeps a closing terminal's SIGHUP off its children — verify, add a guard test, no code expected. FIX UPDATE (v0.12.1 L1.5, doyle re-scope operator-approved 2026-06-18): job-neutral daemon launch is now PRIMARY, breakaway DEMOTED to a fallback rung. ROOT reframed — the daemon INHERITS the terminal's Job because spawn_detached runs FROM the terminal-child CLI (DETACHED_PROCESS detaches the console, not the job); breakaway tried to claw back out but a job CAN deny it (the L1 finding). FIX: launch the cold-started daemon via a job-NEUTRAL creator so it is WmiPrvSE/Task-Scheduler-owned, OUTSIDE any terminal job from birth (why Task-Scheduler-autostarted daemons never had this bug). Launcher ladder (first-success-wins, daemon.rs spawn_detached → BOTH cold-start AND `spt daemon start`): (1) WMI Win32_Process.Create via ABSOLUTE powershell -EncodedCommand (KH 5.12 abs path; base64-UTF16LE dodges all quoting; success requires BOTH ReturnValue==0 AND a parsed ProcessId, else fall-through — never a silent launched), forwarding SPT_* env via a `cmd /c set … & start /b` wrapper because a WMI/scheduler child does NOT inherit transient shell env (verified — SPT_HOME would be lost, wrong universe); (2) schtasks one-shot (same env wrapper; best-effort fallback); (3) CREATE_BREAKAWAY_FROM_JOB (the L1 code, reordered below); (4) in-job last resort (logs DETACH_IN_JOB + tab-close caveat). detached_no_inherit (breakaway-then-in-job) is UNCHANGED for its other caller shellhost::launch_shell (a daemon-spawned shell is already job-neutral once the daemon is). The elevated deelevate path keeps its L1 breakaway for now (elevated-case WMI-reparent = FOLLOW-UP). (v0.12.1)",
2026-06-20T03:13:21.1480177Z       "requiredStages": [
2026-06-20T03:13:21.1480281Z         "doc",
2026-06-20T03:13:21.1480377Z         "impl",
2026-06-20T03:13:21.1480483Z         "unit",
2026-06-20T03:13:21.1480610Z         "int"
2026-06-20T03:13:21.1480712Z       ],
2026-06-20T03:13:21.1480816Z       "stages": {
2026-06-20T03:13:21.1480939Z         "doc": {
2026-06-20T03:13:21.1481060Z           "complete": true,
2026-06-20T03:13:21.1481164Z           "evidence": [
2026-06-20T03:13:21.1481254Z             {
2026-06-20T03:13:21.1481384Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.1481497Z               "line": 420
2026-06-20T03:13:21.1481593Z             },
2026-06-20T03:13:21.1481704Z             {
2026-06-20T03:13:21.1481845Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T03:13:21.1481961Z               "line": 402
2026-06-20T03:13:21.1482062Z             }
2026-06-20T03:13:21.1482164Z           ]
2026-06-20T03:13:21.1482264Z         },
2026-06-20T03:13:21.1482370Z         "impl": {
2026-06-20T03:13:21.1482479Z           "complete": true,
2026-06-20T03:13:21.1482583Z           "evidence": [
2026-06-20T03:13:21.1482690Z             {
2026-06-20T03:13:21.1482841Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.1483046Z               "line": 797
2026-06-20T03:13:21.1483218Z             },
2026-06-20T03:13:21.1483324Z             {
2026-06-20T03:13:21.1483475Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.1483581Z               "line": 822
2026-06-20T03:13:21.1483686Z             },
2026-06-20T03:13:21.1483790Z             {
2026-06-20T03:13:21.1483934Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.1484047Z               "line": 839
2026-06-20T03:13:21.1484152Z             },
2026-06-20T03:13:21.1484249Z             {
2026-06-20T03:13:21.1484395Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.1484499Z               "line": 854
2026-06-20T03:13:21.1484595Z             },
2026-06-20T03:13:21.1484703Z             {
2026-06-20T03:13:21.1484845Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.1484956Z               "line": 874
2026-06-20T03:13:21.1485070Z             },
2026-06-20T03:13:21.1485175Z             {
2026-06-20T03:13:21.1485323Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.1485437Z               "line": 964
2026-06-20T03:13:21.1485548Z             },
2026-06-20T03:13:21.1485647Z             {
2026-06-20T03:13:21.1485799Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.1485923Z               "line": 1016
2026-06-20T03:13:21.1486028Z             },
2026-06-20T03:13:21.1486143Z             {
2026-06-20T03:13:21.1486285Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.1486405Z               "line": 1075
2026-06-20T03:13:21.1486506Z             },
2026-06-20T03:13:21.1486614Z             {
2026-06-20T03:13:21.1486768Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T03:13:21.1486877Z               "line": 527
2026-06-20T03:13:21.1486981Z             }
2026-06-20T03:13:21.1487083Z           ]
2026-06-20T03:13:21.1487178Z         },
2026-06-20T03:13:21.1487286Z         "int": {
2026-06-20T03:13:21.1487410Z           "complete": true,
2026-06-20T03:13:21.1487523Z           "evidence": [
2026-06-20T03:13:21.1487627Z             {
2026-06-20T03:13:21.1487770Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-20T03:13:21.1487880Z               "line": 35
2026-06-20T03:13:21.1487984Z             },
2026-06-20T03:13:21.1488090Z             {
2026-06-20T03:13:21.1488237Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-20T03:13:21.1488351Z               "line": 559
2026-06-20T03:13:21.1488452Z             },
2026-06-20T03:13:21.1488552Z             {
2026-06-20T03:13:21.1488700Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-20T03:13:21.1488805Z               "line": 580
2026-06-20T03:13:21.1488909Z             }
2026-06-20T03:13:21.1489101Z           ]
2026-06-20T03:13:21.1489195Z         },
2026-06-20T03:13:21.1489300Z         "unit": {
2026-06-20T03:13:21.1489420Z           "complete": true,
2026-06-20T03:13:21.1489538Z           "evidence": [
2026-06-20T03:13:21.1489649Z             {
2026-06-20T03:13:21.1489806Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.1489924Z               "line": 1202
2026-06-20T03:13:21.1490034Z             },
2026-06-20T03:13:21.1490137Z             {
2026-06-20T03:13:21.1490284Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.1490395Z               "line": 1246
2026-06-20T03:13:21.1490494Z             },
2026-06-20T03:13:21.1490594Z             {
2026-06-20T03:13:21.1490733Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.1490847Z               "line": 1260
2026-06-20T03:13:21.1490952Z             },
2026-06-20T03:13:21.1491071Z             {
2026-06-20T03:13:21.1491208Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.1491315Z               "line": 1278
2026-06-20T03:13:21.1491419Z             },
2026-06-20T03:13:21.1491523Z             {
2026-06-20T03:13:21.1491782Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.1491891Z               "line": 1302
2026-06-20T03:13:21.1492081Z             },
2026-06-20T03:13:21.1492187Z             {
2026-06-20T03:13:21.1492340Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.1492459Z               "line": 1529
2026-06-20T03:13:21.1492555Z             }
2026-06-20T03:13:21.1492655Z           ]
2026-06-20T03:13:21.1492758Z         }
2026-06-20T03:13:21.1492863Z       }
2026-06-20T03:13:21.1492963Z     },
2026-06-20T03:13:21.1493072Z     {
2026-06-20T03:13:21.1493216Z       "id": "REQ-HAZARD-VIEWER-ISOLATION",
2026-06-20T03:13:21.1495405Z       "title": "A slow / dead / hostile VIEWER must NEVER stall the controller, the PTY child, or the session drain thread. The broker drain fans output to the controller on the authoritative blocking bounded path (advances delivered_through) but to each viewer via a bounded per-viewer channel with a dedicated writer thread; the drain `try_send`s under the log lock and a viewer whose bounded queue OVERFLOWS (can't keep up) is EVICTED (queue dropped, writer thread ends, removed from the viewers map) — the drain thread NEVER touches a viewer socket, so no viewer write can backpressure or block it. A soft viewer cap bounds the thread count. Viewer eviction never perturbs the controller stream, the delivered_through cursor, or the child.",
2026-06-20T03:13:21.1495540Z       "requiredStages": [
2026-06-20T03:13:21.1495644Z         "unit",
2026-06-20T03:13:21.1495749Z         "int"
2026-06-20T03:13:21.1495854Z       ],
2026-06-20T03:13:21.1495958Z       "stages": {
2026-06-20T03:13:21.1496069Z         "doc": {
2026-06-20T03:13:21.1496183Z           "complete": true,
2026-06-20T03:13:21.1496297Z           "evidence": [
2026-06-20T03:13:21.1496393Z             {
2026-06-20T03:13:21.1496531Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T03:13:21.1496650Z               "line": 381
2026-06-20T03:13:21.1496746Z             }
2026-06-20T03:13:21.1496870Z           ]
2026-06-20T03:13:21.1496974Z         },
2026-06-20T03:13:21.1497085Z         "impl": {
2026-06-20T03:13:21.1497227Z           "complete": true,
2026-06-20T03:13:21.1497333Z           "evidence": [
2026-06-20T03:13:21.1497443Z             {
2026-06-20T03:13:21.1497590Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.1497705Z               "line": 100
2026-06-20T03:13:21.1497804Z             }
2026-06-20T03:13:21.1497913Z           ]
2026-06-20T03:13:21.1498018Z         },
2026-06-20T03:13:21.1498121Z         "int": {
2026-06-20T03:13:21.1498239Z           "complete": true,
2026-06-20T03:13:21.1498349Z           "evidence": [
2026-06-20T03:13:21.1498450Z             {
2026-06-20T03:13:21.1498601Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T03:13:21.1498707Z               "line": 1042
2026-06-20T03:13:21.1498811Z             }
2026-06-20T03:13:21.1498916Z           ]
2026-06-20T03:13:21.1499112Z         },
2026-06-20T03:13:21.1499226Z         "unit": {
2026-06-20T03:13:21.1499346Z           "complete": true,
2026-06-20T03:13:21.1499451Z           "evidence": [
2026-06-20T03:13:21.1499555Z             {
2026-06-20T03:13:21.1499703Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.1499818Z               "line": 2168
2026-06-20T03:13:21.1499914Z             }
2026-06-20T03:13:21.1500018Z           ]
2026-06-20T03:13:21.1500123Z         }
2026-06-20T03:13:21.1500219Z       }
2026-06-20T03:13:21.1500324Z     },
2026-06-20T03:13:21.1500427Z     {
2026-06-20T03:13:21.1500551Z       "id": "REQ-HAZARD-WAN-ORIGIN-AUTH",
2026-06-20T03:13:21.1501369Z       "title": "WAN-inbound origin is transport truth, never payload: the access gate's subject (ADR-0009 origin-node whitelist) is the QUIC handshake-proven remote node id from the broker's conn/stream table — a forged origin/node field inside record bytes is inert (7.5)",
2026-06-20T03:13:21.1501493Z       "requiredStages": [
2026-06-20T03:13:21.1501588Z         "doc",
2026-06-20T03:13:21.1501817Z         "impl",
2026-06-20T03:13:21.1501922Z         "unit"
2026-06-20T03:13:21.1502132Z       ],
2026-06-20T03:13:21.1502237Z       "stages": {
2026-06-20T03:13:21.1502342Z         "doc": {
2026-06-20T03:13:21.1502447Z           "complete": true,
2026-06-20T03:13:21.1502566Z           "evidence": [
2026-06-20T03:13:21.1502666Z             {
2026-06-20T03:13:21.1502796Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T03:13:21.1502900Z               "line": 366
2026-06-20T03:13:21.1503000Z             }
2026-06-20T03:13:21.1503106Z           ]
2026-06-20T03:13:21.1503210Z         },
2026-06-20T03:13:21.1503314Z         "impl": {
2026-06-20T03:13:21.1503427Z           "complete": true,
2026-06-20T03:13:21.1503529Z           "evidence": [
2026-06-20T03:13:21.1503638Z             {
2026-06-20T03:13:21.1503776Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-20T03:13:21.1503891Z               "line": 87
2026-06-20T03:13:21.1503990Z             },
2026-06-20T03:13:21.1504096Z             {
2026-06-20T03:13:21.1504244Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-20T03:13:21.1504363Z               "line": 105
2026-06-20T03:13:21.1504463Z             },
2026-06-20T03:13:21.1504563Z             {
2026-06-20T03:13:21.1504721Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-20T03:13:21.1504835Z               "line": 55
2026-06-20T03:13:21.1504935Z             },
2026-06-20T03:13:21.1505041Z             {
2026-06-20T03:13:21.1505192Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T03:13:21.1505312Z               "line": 31
2026-06-20T03:13:21.1505417Z             },
2026-06-20T03:13:21.1505525Z             {
2026-06-20T03:13:21.1505673Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T03:13:21.1505800Z               "line": 446
2026-06-20T03:13:21.1505909Z             },
2026-06-20T03:13:21.1506009Z             {
2026-06-20T03:13:21.1506167Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-20T03:13:21.1506285Z               "line": 95
2026-06-20T03:13:21.1506396Z             },
2026-06-20T03:13:21.1506505Z             {
2026-06-20T03:13:21.1506658Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T03:13:21.1506772Z               "line": 29
2026-06-20T03:13:21.1506866Z             },
2026-06-20T03:13:21.1506973Z             {
2026-06-20T03:13:21.1507120Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T03:13:21.1507239Z               "line": 104
2026-06-20T03:13:21.1507345Z             },
2026-06-20T03:13:21.1507449Z             {
2026-06-20T03:13:21.1507612Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.1507725Z               "line": 208
2026-06-20T03:13:21.1507830Z             },
2026-06-20T03:13:21.1507936Z             {
2026-06-20T03:13:21.1508092Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-20T03:13:21.1508198Z               "line": 28
2026-06-20T03:13:21.1508294Z             },
2026-06-20T03:13:21.1508397Z             {
2026-06-20T03:13:21.1508549Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-20T03:13:21.1508672Z               "line": 74
2026-06-20T03:13:21.1508766Z             },
2026-06-20T03:13:21.1508867Z             {
2026-06-20T03:13:21.1509114Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-20T03:13:21.1509220Z               "line": 32
2026-06-20T03:13:21.1509325Z             },
2026-06-20T03:13:21.1509424Z             {
2026-06-20T03:13:21.1509573Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T03:13:21.1509678Z               "line": 40
2026-06-20T03:13:21.1509782Z             },
2026-06-20T03:13:21.1509888Z             {
2026-06-20T03:13:21.1510030Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T03:13:21.1510155Z               "line": 184
2026-06-20T03:13:21.1510259Z             },
2026-06-20T03:13:21.1510359Z             {
2026-06-20T03:13:21.1510493Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-20T03:13:21.1510717Z               "line": 61
2026-06-20T03:13:21.1510823Z             },
2026-06-20T03:13:21.1511040Z             {
2026-06-20T03:13:21.1511183Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-20T03:13:21.1511290Z               "line": 131
2026-06-20T03:13:21.1511394Z             },
2026-06-20T03:13:21.1511486Z             {
2026-06-20T03:13:21.1511629Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-20T03:13:21.1511738Z               "line": 223
2026-06-20T03:13:21.1511839Z             },
2026-06-20T03:13:21.1511948Z             {
2026-06-20T03:13:21.1512097Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-20T03:13:21.1512206Z               "line": 37
2026-06-20T03:13:21.1512291Z             },
2026-06-20T03:13:21.1512402Z             {
2026-06-20T03:13:21.1512554Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-20T03:13:21.1512658Z               "line": 38
2026-06-20T03:13:21.1512770Z             },
2026-06-20T03:13:21.1512874Z             {
2026-06-20T03:13:21.1513027Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-20T03:13:21.1513126Z               "line": 36
2026-06-20T03:13:21.1513236Z             },
2026-06-20T03:13:21.1513337Z             {
2026-06-20T03:13:21.1513478Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-20T03:13:21.1513584Z               "line": 40
2026-06-20T03:13:21.1513685Z             }
2026-06-20T03:13:21.1513793Z           ]
2026-06-20T03:13:21.1513893Z         },
2026-06-20T03:13:21.1514002Z         "int": {
2026-06-20T03:13:21.1514127Z           "complete": false,
2026-06-20T03:13:21.1514236Z           "evidence": []
2026-06-20T03:13:21.1514341Z         },
2026-06-20T03:13:21.1514446Z         "unit": {
2026-06-20T03:13:21.1514565Z           "complete": true,
2026-06-20T03:13:21.1514680Z           "evidence": [
2026-06-20T03:13:21.1514780Z             {
2026-06-20T03:13:21.1514933Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-20T03:13:21.1515042Z               "line": 212
2026-06-20T03:13:21.1515151Z             },
2026-06-20T03:13:21.1515257Z             {
2026-06-20T03:13:21.1515419Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-20T03:13:21.1515528Z               "line": 136
2026-06-20T03:13:21.1515635Z             },
2026-06-20T03:13:21.1515742Z             {
2026-06-20T03:13:21.1515896Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-20T03:13:21.1516020Z               "line": 685
2026-06-20T03:13:21.1516123Z             },
2026-06-20T03:13:21.1516237Z             {
2026-06-20T03:13:21.1516384Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-20T03:13:21.1516497Z               "line": 224
2026-06-20T03:13:21.1516607Z             },
2026-06-20T03:13:21.1516703Z             {
2026-06-20T03:13:21.1516855Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-20T03:13:21.1516956Z               "line": 206
2026-06-20T03:13:21.1517065Z             },
2026-06-20T03:13:21.1517170Z             {
2026-06-20T03:13:21.1517318Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-20T03:13:21.1517441Z               "line": 112
2026-06-20T03:13:21.1517547Z             },
2026-06-20T03:13:21.1517661Z             {
2026-06-20T03:13:21.1517799Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-20T03:13:21.1517914Z               "line": 157
2026-06-20T03:13:21.1518019Z             },
2026-06-20T03:13:21.1518109Z             {
2026-06-20T03:13:21.1518257Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-20T03:13:21.1518362Z               "line": 215
2026-06-20T03:13:21.1518468Z             },
2026-06-20T03:13:21.1518572Z             {
2026-06-20T03:13:21.1518719Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-20T03:13:21.1518831Z               "line": 141
2026-06-20T03:13:21.1518929Z             },
2026-06-20T03:13:21.1519109Z             {
2026-06-20T03:13:21.1519251Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-20T03:13:21.1519484Z               "line": 162
2026-06-20T03:13:21.1519580Z             }
2026-06-20T03:13:21.1519771Z           ]
2026-06-20T03:13:21.1519875Z         }
2026-06-20T03:13:21.1519979Z       }
2026-06-20T03:13:21.1520081Z     },
2026-06-20T03:13:21.1520181Z     {
2026-06-20T03:13:21.1520327Z       "id": "REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE",
2026-06-20T03:13:21.1522207Z       "title": "Native-PTY spawn must resolve a bare program name with PATHEXT precedence and run a non-PE target through its interpreter: portable-pty's own `which` takes the FIRST PATH match — an extensionless shebang shim (e.g. a node CLI `ccs` shipped beside `ccs.cmd`) — and CreateProcessW then rejects the non-PE file with os error 193 ('not a valid Win32 application'); spt-term resolves the program itself (PATHEXT order prefers .EXE over .CMD; .cmd/.bat → cmd.exe /d /c, .ps1 → powershell -NoProfile -File) so a bare harness/shell [session.self] command actually launches on Windows. Unix is a passthrough (execve honours the shebang).",
2026-06-20T03:13:21.1522357Z       "requiredStages": [
2026-06-20T03:13:21.1522471Z         "doc",
2026-06-20T03:13:21.1522580Z         "impl",
2026-06-20T03:13:21.1522676Z         "unit",
2026-06-20T03:13:21.1522781Z         "int"
2026-06-20T03:13:21.1522875Z       ],
2026-06-20T03:13:21.1522981Z       "stages": {
2026-06-20T03:13:21.1523085Z         "doc": {
2026-06-20T03:13:21.1523209Z           "complete": true,
2026-06-20T03:13:21.1523320Z           "evidence": [
2026-06-20T03:13:21.1523424Z             {
2026-06-20T03:13:21.1523567Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T03:13:21.1523664Z               "line": 250
2026-06-20T03:13:21.1523767Z             }
2026-06-20T03:13:21.1523868Z           ]
2026-06-20T03:13:21.1523979Z         },
2026-06-20T03:13:21.1524086Z         "impl": {
2026-06-20T03:13:21.1524231Z           "complete": true,
2026-06-20T03:13:21.1524349Z           "evidence": [
2026-06-20T03:13:21.1524448Z             {
2026-06-20T03:13:21.1524596Z               "path": "crates/spt-term/src/pty.rs",
2026-06-20T03:13:21.1524706Z               "line": 135
2026-06-20T03:13:21.1524820Z             },
2026-06-20T03:13:21.1524926Z             {
2026-06-20T03:13:21.1525067Z               "path": "crates/spt-term/src/pty.rs",
2026-06-20T03:13:21.1525173Z               "line": 157
2026-06-20T03:13:21.1525274Z             }
2026-06-20T03:13:21.1525382Z           ]
2026-06-20T03:13:21.1525488Z         },
2026-06-20T03:13:21.1525589Z         "int": {
2026-06-20T03:13:21.1525702Z           "complete": true,
2026-06-20T03:13:21.1525827Z           "evidence": [
2026-06-20T03:13:21.1525927Z             {
2026-06-20T03:13:21.1526084Z               "path": "crates/spt-term/tests/winspawn.rs",
2026-06-20T03:13:21.1526199Z               "line": 15
2026-06-20T03:13:21.1526307Z             }
2026-06-20T03:13:21.1526418Z           ]
2026-06-20T03:13:21.1526519Z         },
2026-06-20T03:13:21.1526631Z         "unit": {
2026-06-20T03:13:21.1526740Z           "complete": true,
2026-06-20T03:13:21.1526851Z           "evidence": [
2026-06-20T03:13:21.1526962Z             {
2026-06-20T03:13:21.1527106Z               "path": "crates/spt-term/src/winprog.rs",
2026-06-20T03:13:21.1527216Z               "line": 233
2026-06-20T03:13:21.1527325Z             }
2026-06-20T03:13:21.1527434Z           ]
2026-06-20T03:13:21.1527545Z         }
2026-06-20T03:13:21.1527649Z       }
2026-06-20T03:13:21.1527754Z     },
2026-06-20T03:13:21.1527854Z     {
2026-06-20T03:13:21.1527997Z       "id": "REQ-HAZARD-WINDOWS-PID-RECYCLE",
2026-06-20T03:13:21.1528188Z       "title": "Windows PID-recycling false positives guarded (5.1)",
2026-06-20T03:13:21.1528312Z       "requiredStages": [
2026-06-20T03:13:21.1528423Z         "impl",
2026-06-20T03:13:21.1528526Z         "unit"
2026-06-20T03:13:21.1528631Z       ],
2026-06-20T03:13:21.1528742Z       "stages": {
2026-06-20T03:13:21.1528846Z         "doc": {
2026-06-20T03:13:21.1529038Z           "complete": false,
2026-06-20T03:13:21.1531976Z           "evidence": []
2026-06-20T03:13:21.1532241Z         },
2026-06-20T03:13:21.1532345Z         "impl": {
2026-06-20T03:13:21.1532563Z           "complete": true,
2026-06-20T03:13:21.1532679Z           "evidence": [
2026-06-20T03:13:21.1532782Z             {
2026-06-20T03:13:21.1532926Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-20T03:13:21.1533031Z               "line": 95
2026-06-20T03:13:21.1533130Z             },
2026-06-20T03:13:21.1533236Z             {
2026-06-20T03:13:21.1533384Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.1533488Z               "line": 117
2026-06-20T03:13:21.1533589Z             }
2026-06-20T03:13:21.1533679Z           ]
2026-06-20T03:13:21.1533774Z         },
2026-06-20T03:13:21.1533875Z         "int": {
2026-06-20T03:13:21.1533984Z           "complete": false,
2026-06-20T03:13:21.1534108Z           "evidence": []
2026-06-20T03:13:21.1534209Z         },
2026-06-20T03:13:21.1534308Z         "unit": {
2026-06-20T03:13:21.1534413Z           "complete": true,
2026-06-20T03:13:21.1534529Z           "evidence": [
2026-06-20T03:13:21.1534628Z             {
2026-06-20T03:13:21.1534762Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-20T03:13:21.1534872Z               "line": 250
2026-06-20T03:13:21.1534975Z             },
2026-06-20T03:13:21.1535084Z             {
2026-06-20T03:13:21.1535219Z               "path": "crates/spt-store/src/proc.rs",
2026-06-20T03:13:21.1535327Z               "line": 412
2026-06-20T03:13:21.1535428Z             },
2026-06-20T03:13:21.1535529Z             {
2026-06-20T03:13:21.1535675Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.1535777Z               "line": 611
2026-06-20T03:13:21.1535891Z             },
2026-06-20T03:13:21.1535990Z             {
2026-06-20T03:13:21.1536135Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.1536254Z               "line": 669
2026-06-20T03:13:21.1536358Z             }
2026-06-20T03:13:21.1536464Z           ]
2026-06-20T03:13:21.1536563Z         }
2026-06-20T03:13:21.1536668Z       }
2026-06-20T03:13:21.1536769Z     },
2026-06-20T03:13:21.1536877Z     {
2026-06-20T03:13:21.1537016Z       "id": "REQ-HAZARD-WMI-DAEMON-WINDOW",
2026-06-20T03:13:21.1539637Z       "title": "`spt daemon start` launches the daemon with NO visible console window. REGRESSION (v0.12.1 L1.5): the WMI job-neutral launch (spawn_daemon_via_wmi) set CREATE_NO_WINDOW on the launching powershell but NOT on the Win32_Process.Create call — Win32_Process.Create does not inherit it, so the spawned cmd.exe env-forwarding wrapper popped a console window on every cold-start (violating REQ-INSTALL-10's v0.7.4 no-persistent-window invariant; the old detached_no_inherit path set DETACHED_PROCESS|CREATE_NO_WINDOW). FIX: pass a Win32_ProcessStartup with CreateFlags=DETACHED_PROCESS (0x8 — no console so no window; CREATE_NO_WINDOW 0x08000000 is NOT a valid Win32_ProcessStartup flag → ReturnValue 21 invalid-param, which is why the naive port fails) + ShowWindow=SW_HIDE(0) belt, via the ProcessStartupInformation argument. (v0.12.2)",
2026-06-20T03:13:21.1539792Z       "requiredStages": [
2026-06-20T03:13:21.1539913Z         "impl",
2026-06-20T03:13:21.1540017Z         "unit",
2026-06-20T03:13:21.1540135Z         "int"
2026-06-20T03:13:21.1540235Z       ],
2026-06-20T03:13:21.1540339Z       "stages": {
2026-06-20T03:13:21.1540442Z         "doc": {
2026-06-20T03:13:21.1540561Z           "complete": false,
2026-06-20T03:13:21.1540667Z           "evidence": []
2026-06-20T03:13:21.1540771Z         },
2026-06-20T03:13:21.1540881Z         "impl": {
2026-06-20T03:13:21.1540991Z           "complete": true,
2026-06-20T03:13:21.1541100Z           "evidence": [
2026-06-20T03:13:21.1541211Z             {
2026-06-20T03:13:21.1541363Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.1541462Z               "line": 925
2026-06-20T03:13:21.1541569Z             },
2026-06-20T03:13:21.1541673Z             {
2026-06-20T03:13:21.1541821Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.1542049Z               "line": 994
2026-06-20T03:13:21.1542150Z             }
2026-06-20T03:13:21.1542349Z           ]
2026-06-20T03:13:21.1542451Z         },
2026-06-20T03:13:21.1542560Z         "int": {
2026-06-20T03:13:21.1542678Z           "complete": true,
2026-06-20T03:13:21.1542778Z           "evidence": [
2026-06-20T03:13:21.1542882Z             {
2026-06-20T03:13:21.1543032Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-20T03:13:21.1543143Z               "line": 187
2026-06-20T03:13:21.1543244Z             },
2026-06-20T03:13:21.1543347Z             {
2026-06-20T03:13:21.1543491Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-20T03:13:21.1543601Z               "line": 343
2026-06-20T03:13:21.1543705Z             }
2026-06-20T03:13:21.1543806Z           ]
2026-06-20T03:13:21.1543901Z         },
2026-06-20T03:13:21.1544010Z         "unit": {
2026-06-20T03:13:21.1544126Z           "complete": true,
2026-06-20T03:13:21.1544244Z           "evidence": [
2026-06-20T03:13:21.1544339Z             {
2026-06-20T03:13:21.1544492Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.1544606Z               "line": 1206
2026-06-20T03:13:21.1544712Z             },
2026-06-20T03:13:21.1544821Z             {
2026-06-20T03:13:21.1544955Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1545070Z               "line": 8116
2026-06-20T03:13:21.1545173Z             }
2026-06-20T03:13:21.1545279Z           ]
2026-06-20T03:13:21.1545385Z         }
2026-06-20T03:13:21.1545493Z       }
2026-06-20T03:13:21.1545606Z     },
2026-06-20T03:13:21.1545698Z     {
2026-06-20T03:13:21.1545836Z       "id": "REQ-HAZARD-WORKER-PATH",
2026-06-20T03:13:21.1546051Z       "title": "Single source of truth for Worker/Psyche perch location (1.5)",
2026-06-20T03:13:21.1546179Z       "requiredStages": [
2026-06-20T03:13:21.1546289Z         "impl",
2026-06-20T03:13:21.1546385Z         "unit"
2026-06-20T03:13:21.1546489Z       ],
2026-06-20T03:13:21.1546599Z       "stages": {
2026-06-20T03:13:21.1546695Z         "doc": {
2026-06-20T03:13:21.1546809Z           "complete": false,
2026-06-20T03:13:21.1546928Z           "evidence": []
2026-06-20T03:13:21.1547028Z         },
2026-06-20T03:13:21.1547123Z         "impl": {
2026-06-20T03:13:21.1547243Z           "complete": true,
2026-06-20T03:13:21.1547357Z           "evidence": [
2026-06-20T03:13:21.1547461Z             {
2026-06-20T03:13:21.1547606Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1547728Z               "line": 262
2026-06-20T03:13:21.1547833Z             },
2026-06-20T03:13:21.1547933Z             {
2026-06-20T03:13:21.1548079Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1548183Z               "line": 307
2026-06-20T03:13:21.1548288Z             },
2026-06-20T03:13:21.1548384Z             {
2026-06-20T03:13:21.1548526Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1548637Z               "line": 319
2026-06-20T03:13:21.1548741Z             }
2026-06-20T03:13:21.1548846Z           ]
2026-06-20T03:13:21.1549028Z         },
2026-06-20T03:13:21.1549127Z         "int": {
2026-06-20T03:13:21.1549252Z           "complete": false,
2026-06-20T03:13:21.1549366Z           "evidence": []
2026-06-20T03:13:21.1549461Z         },
2026-06-20T03:13:21.1549567Z         "unit": {
2026-06-20T03:13:21.1549686Z           "complete": true,
2026-06-20T03:13:21.1549785Z           "evidence": [
2026-06-20T03:13:21.1549891Z             {
2026-06-20T03:13:21.1550029Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1550149Z               "line": 455
2026-06-20T03:13:21.1550249Z             },
2026-06-20T03:13:21.1550353Z             {
2026-06-20T03:13:21.1550497Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1550606Z               "line": 499
2026-06-20T03:13:21.1550705Z             }
2026-06-20T03:13:21.1550805Z           ]
2026-06-20T03:13:21.1550913Z         }
2026-06-20T03:13:21.1551127Z       }
2026-06-20T03:13:21.1551227Z     },
2026-06-20T03:13:21.1551321Z     {
2026-06-20T03:13:21.1551551Z       "id": "REQ-HOST-RUN-1",
2026-06-20T03:13:21.1554033Z       "title": "spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held PTY (the spawn-session seam, brain.rs spawn_session_pid — same broker path shellhost.rs launch_shell_brokered_in uses for shells, now for kind=\"harness\" self-role), registers the perch under the given endpoint id, returns the id. Reverses today's harness-hosted-only launch (external launcher → `api bind`). Non-interactive flag set (--adapter <a[:profile]> --id <id> --create --resume <session> --attach|--start|--view) covers every terminal action of the W2 interactive picker so shortcuts (cc-<id>) bake fully non-interactive launches; composite adapter:profile resolves via registry::resolve_option leaf-replace overlay.",
2026-06-20T03:13:21.1554170Z       "requiredStages": [
2026-06-20T03:13:21.1554289Z         "impl",
2026-06-20T03:13:21.1554399Z         "unit",
2026-06-20T03:13:21.1554508Z         "int"
2026-06-20T03:13:21.1554628Z       ],
2026-06-20T03:13:21.1554738Z       "stages": {
2026-06-20T03:13:21.1554847Z         "doc": {
2026-06-20T03:13:21.1554967Z           "complete": false,
2026-06-20T03:13:21.1555085Z           "evidence": []
2026-06-20T03:13:21.1555186Z         },
2026-06-20T03:13:21.1555297Z         "impl": {
2026-06-20T03:13:21.1555405Z           "complete": true,
2026-06-20T03:13:21.1555525Z           "evidence": [
2026-06-20T03:13:21.1555621Z             {
2026-06-20T03:13:21.1555782Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-20T03:13:21.1555888Z               "line": 30
2026-06-20T03:13:21.1555988Z             },
2026-06-20T03:13:21.1556091Z             {
2026-06-20T03:13:21.1556248Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-20T03:13:21.1556359Z               "line": 76
2026-06-20T03:13:21.1556463Z             },
2026-06-20T03:13:21.1556573Z             {
2026-06-20T03:13:21.1556734Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-20T03:13:21.1556849Z               "line": 181
2026-06-20T03:13:21.1556954Z             },
2026-06-20T03:13:21.1557063Z             {
2026-06-20T03:13:21.1557207Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1557317Z               "line": 1266
2026-06-20T03:13:21.1557421Z             }
2026-06-20T03:13:21.1557517Z           ]
2026-06-20T03:13:21.1557617Z         },
2026-06-20T03:13:21.1557726Z         "int": {
2026-06-20T03:13:21.1557837Z           "complete": true,
2026-06-20T03:13:21.1557946Z           "evidence": [
2026-06-20T03:13:21.1558050Z             {
2026-06-20T03:13:21.1558200Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T03:13:21.1558317Z               "line": 285
2026-06-20T03:13:21.1558417Z             }
2026-06-20T03:13:21.1558522Z           ]
2026-06-20T03:13:21.1558629Z         },
2026-06-20T03:13:21.1558743Z         "unit": {
2026-06-20T03:13:21.1558844Z           "complete": true,
2026-06-20T03:13:21.1559033Z           "evidence": [
2026-06-20T03:13:21.1559144Z             {
2026-06-20T03:13:21.1559287Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-20T03:13:21.1559396Z               "line": 229
2026-06-20T03:13:21.1559497Z             },
2026-06-20T03:13:21.1559602Z             {
2026-06-20T03:13:21.1559750Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-20T03:13:21.1559874Z               "line": 296
2026-06-20T03:13:21.1559978Z             },
2026-06-20T03:13:21.1560079Z             {
2026-06-20T03:13:21.1560222Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-20T03:13:21.1560331Z               "line": 419
2026-06-20T03:13:21.1560432Z             }
2026-06-20T03:13:21.1560536Z           ]
2026-06-20T03:13:21.1560631Z         }
2026-06-20T03:13:21.1560738Z       }
2026-06-20T03:13:21.1560841Z     },
2026-06-20T03:13:21.1561062Z     {
2026-06-20T03:13:21.1561184Z       "id": "REQ-HOST-RUN-2",
2026-06-20T03:13:21.1562961Z       "title": "Project-scoped working directory for spt-hosted bringup: `spt endpoint run` lands the broker-spawned harness PTY in the user's PROJECT cwd, not the daemon's, via an additive `SpawnReq.cwd` field carried through the broker PTY spawn (portable-pty CommandBuilder cwd). N-1-safe wire change (additive, defaulted). Required because the consumer (Claude Code) is project-scoped: broker-inherited cwd = the daemon's cwd = the wrong `.claude`, wrong session history, wrong digest source; `cc <id>` at a project root MUST land the harness in that project. W1 ships broker-inherited cwd as a bringup-proof shortcut only; this REQ must land before the M12 gate (doyle, 2026-06-14).",
2026-06-20T03:13:21.1563170Z       "requiredStages": [
2026-06-20T03:13:21.1563271Z         "impl",
2026-06-20T03:13:21.1563380Z         "unit",
2026-06-20T03:13:21.1563485Z         "int"
2026-06-20T03:13:21.1563591Z       ],
2026-06-20T03:13:21.1563709Z       "stages": {
2026-06-20T03:13:21.1563812Z         "doc": {
2026-06-20T03:13:21.1563936Z           "complete": false,
2026-06-20T03:13:21.1564050Z           "evidence": []
2026-06-20T03:13:21.1564158Z         },
2026-06-20T03:13:21.1564258Z         "impl": {
2026-06-20T03:13:21.1564383Z           "complete": true,
2026-06-20T03:13:21.1564492Z           "evidence": [
2026-06-20T03:13:21.1564588Z             {
2026-06-20T03:13:21.1564754Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-20T03:13:21.1564864Z               "line": 182
2026-06-20T03:13:21.1564974Z             },
2026-06-20T03:13:21.1565074Z             {
2026-06-20T03:13:21.1565213Z               "path": "crates/spt-term/src/pty.rs",
2026-06-20T03:13:21.1565321Z               "line": 113
2026-06-20T03:13:21.1565426Z             }
2026-06-20T03:13:21.1565532Z           ]
2026-06-20T03:13:21.1565632Z         },
2026-06-20T03:13:21.1565731Z         "int": {
2026-06-20T03:13:21.1565852Z           "complete": true,
2026-06-20T03:13:21.1565970Z           "evidence": [
2026-06-20T03:13:21.1566075Z             {
2026-06-20T03:13:21.1566238Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T03:13:21.1566357Z               "line": 572
2026-06-20T03:13:21.1566458Z             }
2026-06-20T03:13:21.1566558Z           ]
2026-06-20T03:13:21.1566660Z         },
2026-06-20T03:13:21.1566760Z         "unit": {
2026-06-20T03:13:21.1566880Z           "complete": true,
2026-06-20T03:13:21.1566989Z           "evidence": [
2026-06-20T03:13:21.1567094Z             {
2026-06-20T03:13:21.1567243Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-20T03:13:21.1567352Z               "line": 86
2026-06-20T03:13:21.1567453Z             }
2026-06-20T03:13:21.1567557Z           ]
2026-06-20T03:13:21.1567666Z         }
2026-06-20T03:13:21.1567767Z       }
2026-06-20T03:13:21.1567872Z     },
2026-06-20T03:13:21.1567966Z     {
2026-06-20T03:13:21.1568082Z       "id": "REQ-INFRA-1",
2026-06-20T03:13:21.1568296Z       "title": "GitHub issue tracking for v1; tangled.org as migration target",
2026-06-20T03:13:21.1568421Z       "requiredStages": [],
2026-06-20T03:13:21.1568529Z       "stages": {
2026-06-20T03:13:21.1568639Z         "doc": {
2026-06-20T03:13:21.1568760Z           "complete": false,
2026-06-20T03:13:21.1568877Z           "evidence": []
2026-06-20T03:13:21.1569048Z         },
2026-06-20T03:13:21.1569152Z         "impl": {
2026-06-20T03:13:21.1569270Z           "complete": false,
2026-06-20T03:13:21.1569390Z           "evidence": []
2026-06-20T03:13:21.1569495Z         },
2026-06-20T03:13:21.1569599Z         "int": {
2026-06-20T03:13:21.1569714Z           "complete": false,
2026-06-20T03:13:21.1569828Z           "evidence": []
2026-06-20T03:13:21.1569932Z         },
2026-06-20T03:13:21.1570044Z         "unit": {
2026-06-20T03:13:21.1570166Z           "complete": false,
2026-06-20T03:13:21.1570281Z           "evidence": []
2026-06-20T03:13:21.1570382Z         }
2026-06-20T03:13:21.1570472Z       }
2026-06-20T03:13:21.1570711Z     },
2026-06-20T03:13:21.1570810Z     {
2026-06-20T03:13:21.1570930Z       "id": "REQ-INST-1",
2026-06-20T03:13:21.1571201Z       "title": "endpoint ID vs instance split (adapter-agnostic ID)",
2026-06-20T03:13:21.1571322Z       "requiredStages": [],
2026-06-20T03:13:21.1571430Z       "stages": {
2026-06-20T03:13:21.1571530Z         "doc": {
2026-06-20T03:13:21.1571646Z           "complete": false,
2026-06-20T03:13:21.1571759Z           "evidence": []
2026-06-20T03:13:21.1571853Z         },
2026-06-20T03:13:21.1571964Z         "impl": {
2026-06-20T03:13:21.1572071Z           "complete": false,
2026-06-20T03:13:21.1572175Z           "evidence": []
2026-06-20T03:13:21.1572281Z         },
2026-06-20T03:13:21.1572386Z         "int": {
2026-06-20T03:13:21.1572499Z           "complete": false,
2026-06-20T03:13:21.1572600Z           "evidence": []
2026-06-20T03:13:21.1572710Z         },
2026-06-20T03:13:21.1572814Z         "unit": {
2026-06-20T03:13:21.1572934Z           "complete": false,
2026-06-20T03:13:21.1573053Z           "evidence": []
2026-06-20T03:13:21.1573153Z         }
2026-06-20T03:13:21.1573254Z       }
2026-06-20T03:13:21.1573363Z     },
2026-06-20T03:13:21.1573463Z     {
2026-06-20T03:13:21.1573569Z       "id": "REQ-INST-10",
2026-06-20T03:13:21.1573816Z       "title": "Qualified addressing [subnet:]id[@node] + ambiguity forces qualification",
2026-06-20T03:13:21.1573931Z       "requiredStages": [
2026-06-20T03:13:21.1574040Z         "impl",
2026-06-20T03:13:21.1574141Z         "unit"
2026-06-20T03:13:21.1574241Z       ],
2026-06-20T03:13:21.1574344Z       "stages": {
2026-06-20T03:13:21.1574453Z         "doc": {
2026-06-20T03:13:21.1574563Z           "complete": false,
2026-06-20T03:13:21.1574676Z           "evidence": []
2026-06-20T03:13:21.1574780Z         },
2026-06-20T03:13:21.1574891Z         "impl": {
2026-06-20T03:13:21.1575009Z           "complete": true,
2026-06-20T03:13:21.1575124Z           "evidence": [
2026-06-20T03:13:21.1575229Z             {
2026-06-20T03:13:21.1575391Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1575496Z               "line": 648
2026-06-20T03:13:21.1575611Z             },
2026-06-20T03:13:21.1575715Z             {
2026-06-20T03:13:21.1575873Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1575986Z               "line": 725
2026-06-20T03:13:21.1576078Z             },
2026-06-20T03:13:21.1576178Z             {
2026-06-20T03:13:21.1576320Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-20T03:13:21.1576445Z               "line": 13
2026-06-20T03:13:21.1576549Z             },
2026-06-20T03:13:21.1576654Z             {
2026-06-20T03:13:21.1576803Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-20T03:13:21.1576912Z               "line": 67
2026-06-20T03:13:21.1577018Z             },
2026-06-20T03:13:21.1577118Z             {
2026-06-20T03:13:21.1577259Z               "path": "crates/spt/src/wansend.rs",
2026-06-20T03:13:21.1577388Z               "line": 18
2026-06-20T03:13:21.1577508Z             },
2026-06-20T03:13:21.1577611Z             {
2026-06-20T03:13:21.1577756Z               "path": "crates/spt/src/wansend.rs",
2026-06-20T03:13:21.1577883Z               "line": 444
2026-06-20T03:13:21.1577984Z             }
2026-06-20T03:13:21.1578094Z           ]
2026-06-20T03:13:21.1578193Z         },
2026-06-20T03:13:21.1578298Z         "int": {
2026-06-20T03:13:21.1578423Z           "complete": false,
2026-06-20T03:13:21.1578532Z           "evidence": []
2026-06-20T03:13:21.1578633Z         },
2026-06-20T03:13:21.1578738Z         "unit": {
2026-06-20T03:13:21.1578865Z           "complete": true,
2026-06-20T03:13:21.1579043Z           "evidence": [
2026-06-20T03:13:21.1579152Z             {
2026-06-20T03:13:21.1579301Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1579405Z               "line": 932
2026-06-20T03:13:21.1579509Z             },
2026-06-20T03:13:21.1579613Z             {
2026-06-20T03:13:21.1579764Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1579988Z               "line": 1309
2026-06-20T03:13:21.1580097Z             },
2026-06-20T03:13:21.1580294Z             {
2026-06-20T03:13:21.1580440Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1580565Z               "line": 1320
2026-06-20T03:13:21.1580670Z             },
2026-06-20T03:13:21.1580769Z             {
2026-06-20T03:13:21.1580919Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1581033Z               "line": 1336
2026-06-20T03:13:21.1581142Z             },
2026-06-20T03:13:21.1581243Z             {
2026-06-20T03:13:21.1581380Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1581485Z               "line": 1352
2026-06-20T03:13:21.1581596Z             },
2026-06-20T03:13:21.1581705Z             {
2026-06-20T03:13:21.1581844Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1581962Z               "line": 1374
2026-06-20T03:13:21.1582067Z             },
2026-06-20T03:13:21.1582173Z             {
2026-06-20T03:13:21.1582319Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1582432Z               "line": 1679
2026-06-20T03:13:21.1582538Z             },
2026-06-20T03:13:21.1582640Z             {
2026-06-20T03:13:21.1582784Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-20T03:13:21.1582894Z               "line": 130
2026-06-20T03:13:21.1582988Z             },
2026-06-20T03:13:21.1583088Z             {
2026-06-20T03:13:21.1583237Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-20T03:13:21.1583346Z               "line": 167
2026-06-20T03:13:21.1583447Z             },
2026-06-20T03:13:21.1583556Z             {
2026-06-20T03:13:21.1583694Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-20T03:13:21.1583814Z               "line": 175
2026-06-20T03:13:21.1583914Z             },
2026-06-20T03:13:21.1584014Z             {
2026-06-20T03:13:21.1584157Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-20T03:13:21.1584271Z               "line": 183
2026-06-20T03:13:21.1584377Z             },
2026-06-20T03:13:21.1584477Z             {
2026-06-20T03:13:21.1584619Z               "path": "crates/spt/src/wansend.rs",
2026-06-20T03:13:21.1584725Z               "line": 896
2026-06-20T03:13:21.1584829Z             }
2026-06-20T03:13:21.1584933Z           ]
2026-06-20T03:13:21.1585037Z         }
2026-06-20T03:13:21.1585146Z       }
2026-06-20T03:13:21.1585241Z     },
2026-06-20T03:13:21.1585350Z     {
2026-06-20T03:13:21.1585456Z       "id": "REQ-INST-11",
2026-06-20T03:13:21.1585699Z       "title": "spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)",
2026-06-20T03:13:21.1585823Z       "requiredStages": [
2026-06-20T03:13:21.1585931Z         "impl",
2026-06-20T03:13:21.1586038Z         "unit"
2026-06-20T03:13:21.1586137Z       ],
2026-06-20T03:13:21.1586241Z       "stages": {
2026-06-20T03:13:21.1586343Z         "doc": {
2026-06-20T03:13:21.1586461Z           "complete": false,
2026-06-20T03:13:21.1586570Z           "evidence": []
2026-06-20T03:13:21.1586682Z         },
2026-06-20T03:13:21.1586790Z         "impl": {
2026-06-20T03:13:21.1586900Z           "complete": true,
2026-06-20T03:13:21.1587015Z           "evidence": [
2026-06-20T03:13:21.1587109Z             {
2026-06-20T03:13:21.1587263Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1587377Z               "line": 514
2026-06-20T03:13:21.1587482Z             },
2026-06-20T03:13:21.1587588Z             {
2026-06-20T03:13:21.1587743Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T03:13:21.1587847Z               "line": 297
2026-06-20T03:13:21.1587944Z             },
2026-06-20T03:13:21.1588049Z             {
2026-06-20T03:13:21.1588201Z               "path": "crates/spt-store/src/rename.rs",
2026-06-20T03:13:21.1588302Z               "line": 59
2026-06-20T03:13:21.1588406Z             },
2026-06-20T03:13:21.1588510Z             {
2026-06-20T03:13:21.1588744Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1588854Z               "line": 5291
2026-06-20T03:13:21.1589097Z             },
2026-06-20T03:13:21.1589203Z             {
2026-06-20T03:13:21.1589336Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1589445Z               "line": 7137
2026-06-20T03:13:21.1589551Z             }
2026-06-20T03:13:21.1589660Z           ]
2026-06-20T03:13:21.1589759Z         },
2026-06-20T03:13:21.1589866Z         "int": {
2026-06-20T03:13:21.1589993Z           "complete": false,
2026-06-20T03:13:21.1590102Z           "evidence": []
2026-06-20T03:13:21.1590207Z         },
2026-06-20T03:13:21.1590315Z         "unit": {
2026-06-20T03:13:21.1590438Z           "complete": true,
2026-06-20T03:13:21.1590539Z           "evidence": [
2026-06-20T03:13:21.1590649Z             {
2026-06-20T03:13:21.1590806Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1590915Z               "line": 1479
2026-06-20T03:13:21.1591029Z             },
2026-06-20T03:13:21.1591135Z             {
2026-06-20T03:13:21.1591283Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1591392Z               "line": 1512
2026-06-20T03:13:21.1591498Z             },
2026-06-20T03:13:21.1591602Z             {
2026-06-20T03:13:21.1591745Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T03:13:21.1591869Z               "line": 527
2026-06-20T03:13:21.1591969Z             },
2026-06-20T03:13:21.1592070Z             {
2026-06-20T03:13:21.1592221Z               "path": "crates/spt-store/src/rename.rs",
2026-06-20T03:13:21.1592331Z               "line": 160
2026-06-20T03:13:21.1592447Z             },
2026-06-20T03:13:21.1592546Z             {
2026-06-20T03:13:21.1592695Z               "path": "crates/spt-store/src/rename.rs",
2026-06-20T03:13:21.1592795Z               "line": 190
2026-06-20T03:13:21.1592898Z             },
2026-06-20T03:13:21.1592997Z             {
2026-06-20T03:13:21.1593150Z               "path": "crates/spt-store/src/rename.rs",
2026-06-20T03:13:21.1593267Z               "line": 225
2026-06-20T03:13:21.1593363Z             },
2026-06-20T03:13:21.1593463Z             {
2026-06-20T03:13:21.1593591Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1593717Z               "line": 7994
2026-06-20T03:13:21.1593826Z             }
2026-06-20T03:13:21.1593920Z           ]
2026-06-20T03:13:21.1594017Z         }
2026-06-20T03:13:21.1594121Z       }
2026-06-20T03:13:21.1594225Z     },
2026-06-20T03:13:21.1594327Z     {
2026-06-20T03:13:21.1594440Z       "id": "REQ-INST-12",
2026-06-20T03:13:21.1594755Z       "title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync",
2026-06-20T03:13:21.1594869Z       "requiredStages": [
2026-06-20T03:13:21.1594975Z         "impl",
2026-06-20T03:13:21.1595084Z         "unit"
2026-06-20T03:13:21.1595189Z       ],
2026-06-20T03:13:21.1595290Z       "stages": {
2026-06-20T03:13:21.1595408Z         "doc": {
2026-06-20T03:13:21.1595540Z           "complete": false,
2026-06-20T03:13:21.1595651Z           "evidence": []
2026-06-20T03:13:21.1595762Z         },
2026-06-20T03:13:21.1595871Z         "impl": {
2026-06-20T03:13:21.1595992Z           "complete": true,
2026-06-20T03:13:21.1596106Z           "evidence": [
2026-06-20T03:13:21.1596211Z             {
2026-06-20T03:13:21.1596369Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1596478Z               "line": 566
2026-06-20T03:13:21.1596584Z             },
2026-06-20T03:13:21.1596693Z             {
2026-06-20T03:13:21.1596840Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1596951Z               "line": 659
2026-06-20T03:13:21.1597064Z             },
2026-06-20T03:13:21.1597174Z             {
2026-06-20T03:13:21.1597317Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1597436Z               "line": 739
2026-06-20T03:13:21.1597528Z             },
2026-06-20T03:13:21.1597746Z             {
2026-06-20T03:13:21.1597891Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T03:13:21.1598104Z               "line": 96
2026-06-20T03:13:21.1598210Z             },
2026-06-20T03:13:21.1598317Z             {
2026-06-20T03:13:21.1598465Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T03:13:21.1598571Z               "line": 269
2026-06-20T03:13:21.1598670Z             },
2026-06-20T03:13:21.1598770Z             {
2026-06-20T03:13:21.1598924Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-20T03:13:21.1599119Z               "line": 148
2026-06-20T03:13:21.1599219Z             }
2026-06-20T03:13:21.1599328Z           ]
2026-06-20T03:13:21.1599429Z         },
2026-06-20T03:13:21.1599534Z         "int": {
2026-06-20T03:13:21.1599652Z           "complete": false,
2026-06-20T03:13:21.1599768Z           "evidence": []
2026-06-20T03:13:21.1599872Z         },
2026-06-20T03:13:21.1599972Z         "unit": {
2026-06-20T03:13:21.1600102Z           "complete": true,
2026-06-20T03:13:21.1600215Z           "evidence": [
2026-06-20T03:13:21.1600320Z             {
2026-06-20T03:13:21.1600469Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1600582Z               "line": 1554
2026-06-20T03:13:21.1600686Z             },
2026-06-20T03:13:21.1600786Z             {
2026-06-20T03:13:21.1600936Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1601046Z               "line": 1577
2026-06-20T03:13:21.1601152Z             },
2026-06-20T03:13:21.1601242Z             {
2026-06-20T03:13:21.1601395Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1601509Z               "line": 1614
2026-06-20T03:13:21.1601608Z             },
2026-06-20T03:13:21.1601714Z             {
2026-06-20T03:13:21.1601857Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T03:13:21.1601967Z               "line": 457
2026-06-20T03:13:21.1602077Z             },
2026-06-20T03:13:21.1602181Z             {
2026-06-20T03:13:21.1602335Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-20T03:13:21.1602444Z               "line": 185
2026-06-20T03:13:21.1602548Z             },
2026-06-20T03:13:21.1602650Z             {
2026-06-20T03:13:21.1602791Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-20T03:13:21.1602906Z               "line": 206
2026-06-20T03:13:21.1603007Z             },
2026-06-20T03:13:21.1603120Z             {
2026-06-20T03:13:21.1603264Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-20T03:13:21.1603388Z               "line": 232
2026-06-20T03:13:21.1603491Z             }
2026-06-20T03:13:21.1603596Z           ]
2026-06-20T03:13:21.1603700Z         }
2026-06-20T03:13:21.1603794Z       }
2026-06-20T03:13:21.1603894Z     },
2026-06-20T03:13:21.1603986Z     {
2026-06-20T03:13:21.1604105Z       "id": "REQ-INST-13",
2026-06-20T03:13:21.1604343Z       "title": "Subnet-exclusive sync + per-endpoint subnet-membership list",
2026-06-20T03:13:21.1604457Z       "requiredStages": [
2026-06-20T03:13:21.1604563Z         "impl",
2026-06-20T03:13:21.1604672Z         "unit"
2026-06-20T03:13:21.1604781Z       ],
2026-06-20T03:13:21.1604892Z       "stages": {
2026-06-20T03:13:21.1604996Z         "doc": {
2026-06-20T03:13:21.1605110Z           "complete": false,
2026-06-20T03:13:21.1605221Z           "evidence": []
2026-06-20T03:13:21.1605330Z         },
2026-06-20T03:13:21.1605434Z         "impl": {
2026-06-20T03:13:21.1605559Z           "complete": true,
2026-06-20T03:13:21.1605663Z           "evidence": [
2026-06-20T03:13:21.1605768Z             {
2026-06-20T03:13:21.1605912Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T03:13:21.1606034Z               "line": 100
2026-06-20T03:13:21.1606144Z             },
2026-06-20T03:13:21.1606244Z             {
2026-06-20T03:13:21.1606394Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-20T03:13:21.1606495Z               "line": 171
2026-06-20T03:13:21.1606699Z             }
2026-06-20T03:13:21.1606800Z           ]
2026-06-20T03:13:21.1606900Z         },
2026-06-20T03:13:21.1607095Z         "int": {
2026-06-20T03:13:21.1607210Z           "complete": false,
2026-06-20T03:13:21.1607328Z           "evidence": []
2026-06-20T03:13:21.1607425Z         },
2026-06-20T03:13:21.1607535Z         "unit": {
2026-06-20T03:13:21.1607648Z           "complete": true,
2026-06-20T03:13:21.1607754Z           "evidence": [
2026-06-20T03:13:21.1607863Z             {
2026-06-20T03:13:21.1608006Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-20T03:13:21.1608122Z               "line": 261
2026-06-20T03:13:21.1608225Z             },
2026-06-20T03:13:21.1608330Z             {
2026-06-20T03:13:21.1608479Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-20T03:13:21.1608588Z               "line": 279
2026-06-20T03:13:21.1608694Z             }
2026-06-20T03:13:21.1608799Z           ]
2026-06-20T03:13:21.1608901Z         }
2026-06-20T03:13:21.1609098Z       }
2026-06-20T03:13:21.1609207Z     },
2026-06-20T03:13:21.1609306Z     {
2026-06-20T03:13:21.1609436Z       "id": "REQ-INST-14",
2026-06-20T03:13:21.1609846Z       "title": "Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated",
2026-06-20T03:13:21.1609955Z       "requiredStages": [
2026-06-20T03:13:21.1610061Z         "doc",
2026-06-20T03:13:21.1610161Z         "impl",
2026-06-20T03:13:21.1610265Z         "unit"
2026-06-20T03:13:21.1610372Z       ],
2026-06-20T03:13:21.1610480Z       "stages": {
2026-06-20T03:13:21.1610589Z         "doc": {
2026-06-20T03:13:21.1610710Z           "complete": true,
2026-06-20T03:13:21.1610813Z           "evidence": [
2026-06-20T03:13:21.1610914Z             {
2026-06-20T03:13:21.1611043Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.1611147Z               "line": 588
2026-06-20T03:13:21.1611251Z             },
2026-06-20T03:13:21.1611361Z             {
2026-06-20T03:13:21.1611492Z               "path": "docs/STORAGE.md",
2026-06-20T03:13:21.1611606Z               "line": 49
2026-06-20T03:13:21.1611717Z             }
2026-06-20T03:13:21.1611826Z           ]
2026-06-20T03:13:21.1611926Z         },
2026-06-20T03:13:21.1612041Z         "impl": {
2026-06-20T03:13:21.1612155Z           "complete": true,
2026-06-20T03:13:21.1612266Z           "evidence": [
2026-06-20T03:13:21.1612370Z             {
2026-06-20T03:13:21.1612522Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.1612637Z               "line": 410
2026-06-20T03:13:21.1612741Z             },
2026-06-20T03:13:21.1612846Z             {
2026-06-20T03:13:21.1612999Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1613109Z               "line": 367
2026-06-20T03:13:21.1613215Z             },
2026-06-20T03:13:21.1613318Z             {
2026-06-20T03:13:21.1613461Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T03:13:21.1613577Z               "line": 293
2026-06-20T03:13:21.1613690Z             },
2026-06-20T03:13:21.1613796Z             {
2026-06-20T03:13:21.1613925Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1614038Z               "line": 1577
2026-06-20T03:13:21.1614128Z             }
2026-06-20T03:13:21.1614237Z           ]
2026-06-20T03:13:21.1614336Z         },
2026-06-20T03:13:21.1614445Z         "int": {
2026-06-20T03:13:21.1614560Z           "complete": false,
2026-06-20T03:13:21.1614669Z           "evidence": []
2026-06-20T03:13:21.1614774Z         },
2026-06-20T03:13:21.1614880Z         "unit": {
2026-06-20T03:13:21.1615008Z           "complete": true,
2026-06-20T03:13:21.1615113Z           "evidence": [
2026-06-20T03:13:21.1617866Z             {
2026-06-20T03:13:21.1618066Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.1618185Z               "line": 1163
2026-06-20T03:13:21.1618285Z             },
2026-06-20T03:13:21.1618391Z             {
2026-06-20T03:13:21.1618552Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1618814Z               "line": 944
2026-06-20T03:13:21.1619081Z             },
2026-06-20T03:13:21.1619182Z             {
2026-06-20T03:13:21.1619330Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1619457Z               "line": 1205
2026-06-20T03:13:21.1619557Z             },
2026-06-20T03:13:21.1619663Z             {
2026-06-20T03:13:21.1619809Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T03:13:21.1619915Z               "line": 659
2026-06-20T03:13:21.1620025Z             },
2026-06-20T03:13:21.1620120Z             {
2026-06-20T03:13:21.1620259Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1620353Z               "line": 8070
2026-06-20T03:13:21.1620458Z             }
2026-06-20T03:13:21.1620559Z           ]
2026-06-20T03:13:21.1620654Z         }
2026-06-20T03:13:21.1620759Z       }
2026-06-20T03:13:21.1620859Z     },
2026-06-20T03:13:21.1620960Z     {
2026-06-20T03:13:21.1621088Z       "id": "REQ-INST-15",
2026-06-20T03:13:21.1621845Z       "title": "Immutable home subnet (assigned at creation: auto-if-one/ask-if-many) + spt fork (cross-subnet clone to a new identity, copy-then-diverge, not re-home); adapter chosen at creation from registered hostable adapters, changed only via launch/resume-under-new (ADR-0010)",
2026-06-20T03:13:21.1621977Z       "requiredStages": [
2026-06-20T03:13:21.1622081Z         "doc",
2026-06-20T03:13:21.1622191Z         "impl",
2026-06-20T03:13:21.1622297Z         "unit"
2026-06-20T03:13:21.1622405Z       ],
2026-06-20T03:13:21.1622505Z       "stages": {
2026-06-20T03:13:21.1622611Z         "doc": {
2026-06-20T03:13:21.1622734Z           "complete": true,
2026-06-20T03:13:21.1622835Z           "evidence": [
2026-06-20T03:13:21.1622925Z             {
2026-06-20T03:13:21.1623136Z               "path": "docs/adr/0010-immutable-home-subnet-fork-not-rehome.md",
2026-06-20T03:13:21.1623249Z               "line": 3
2026-06-20T03:13:21.1623349Z             }
2026-06-20T03:13:21.1623450Z           ]
2026-06-20T03:13:21.1623549Z         },
2026-06-20T03:13:21.1623649Z         "impl": {
2026-06-20T03:13:21.1623770Z           "complete": true,
2026-06-20T03:13:21.1623878Z           "evidence": [
2026-06-20T03:13:21.1623983Z             {
2026-06-20T03:13:21.1624147Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.1624265Z               "line": 353
2026-06-20T03:13:21.1624366Z             },
2026-06-20T03:13:21.1624462Z             {
2026-06-20T03:13:21.1624607Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-20T03:13:21.1624721Z               "line": 60
2026-06-20T03:13:21.1624830Z             },
2026-06-20T03:13:21.1624929Z             {
2026-06-20T03:13:21.1625082Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T03:13:21.1625187Z               "line": 368
2026-06-20T03:13:21.1625291Z             },
2026-06-20T03:13:21.1625398Z             {
2026-06-20T03:13:21.1625553Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T03:13:21.1625673Z               "line": 417
2026-06-20T03:13:21.1625783Z             },
2026-06-20T03:13:21.1625882Z             {
2026-06-20T03:13:21.1626032Z               "path": "crates/spt-store/src/home.rs",
2026-06-20T03:13:21.1626140Z               "line": 19
2026-06-20T03:13:21.1626245Z             },
2026-06-20T03:13:21.1626347Z             {
2026-06-20T03:13:21.1626483Z               "path": "crates/spt-store/src/home.rs",
2026-06-20T03:13:21.1626598Z               "line": 70
2026-06-20T03:13:21.1626695Z             },
2026-06-20T03:13:21.1626803Z             {
2026-06-20T03:13:21.1626938Z               "path": "crates/spt-store/src/home.rs",
2026-06-20T03:13:21.1627042Z               "line": 96
2026-06-20T03:13:21.1627141Z             },
2026-06-20T03:13:21.1627240Z             {
2026-06-20T03:13:21.1627373Z               "path": "crates/spt-store/src/home.rs",
2026-06-20T03:13:21.1627482Z               "line": 121
2026-06-20T03:13:21.1627707Z             },
2026-06-20T03:13:21.1627806Z             {
2026-06-20T03:13:21.1627945Z               "path": "crates/spt-store/src/home.rs",
2026-06-20T03:13:21.1628144Z               "line": 172
2026-06-20T03:13:21.1628245Z             },
2026-06-20T03:13:21.1628350Z             {
2026-06-20T03:13:21.1628501Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.1628603Z               "line": 178
2026-06-20T03:13:21.1628707Z             },
2026-06-20T03:13:21.1628811Z             {
2026-06-20T03:13:21.1629027Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1629126Z               "line": 1469
2026-06-20T03:13:21.1629233Z             }
2026-06-20T03:13:21.1629332Z           ]
2026-06-20T03:13:21.1629437Z         },
2026-06-20T03:13:21.1629538Z         "int": {
2026-06-20T03:13:21.1629660Z           "complete": false,
2026-06-20T03:13:21.1629770Z           "evidence": []
2026-06-20T03:13:21.1629877Z         },
2026-06-20T03:13:21.1629984Z         "unit": {
2026-06-20T03:13:21.1630107Z           "complete": true,
2026-06-20T03:13:21.1630213Z           "evidence": [
2026-06-20T03:13:21.1630309Z             {
2026-06-20T03:13:21.1630460Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T03:13:21.1630567Z               "line": 577
2026-06-20T03:13:21.1630661Z             },
2026-06-20T03:13:21.1630761Z             {
2026-06-20T03:13:21.1630905Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T03:13:21.1631014Z               "line": 638
2026-06-20T03:13:21.1631119Z             },
2026-06-20T03:13:21.1631219Z             {
2026-06-20T03:13:21.1631357Z               "path": "crates/spt-store/src/home.rs",
2026-06-20T03:13:21.1631458Z               "line": 213
2026-06-20T03:13:21.1631562Z             },
2026-06-20T03:13:21.1631662Z             {
2026-06-20T03:13:21.1631801Z               "path": "crates/spt-store/src/home.rs",
2026-06-20T03:13:21.1631905Z               "line": 249
2026-06-20T03:13:21.1632000Z             },
2026-06-20T03:13:21.1632107Z             {
2026-06-20T03:13:21.1632253Z               "path": "crates/spt-store/src/home.rs",
2026-06-20T03:13:21.1632366Z               "line": 262
2026-06-20T03:13:21.1632472Z             },
2026-06-20T03:13:21.1632575Z             {
2026-06-20T03:13:21.1632708Z               "path": "crates/spt-store/src/home.rs",
2026-06-20T03:13:21.1632818Z               "line": 338
2026-06-20T03:13:21.1632922Z             },
2026-06-20T03:13:21.1633032Z             {
2026-06-20T03:13:21.1633171Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.1633284Z               "line": 690
2026-06-20T03:13:21.1633381Z             },
2026-06-20T03:13:21.1633476Z             {
2026-06-20T03:13:21.1633604Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1633715Z               "line": 8007
2026-06-20T03:13:21.1633819Z             },
2026-06-20T03:13:21.1633928Z             {
2026-06-20T03:13:21.1634053Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1634163Z               "line": 9837
2026-06-20T03:13:21.1634267Z             }
2026-06-20T03:13:21.1634368Z           ]
2026-06-20T03:13:21.1634476Z         }
2026-06-20T03:13:21.1634587Z       }
2026-06-20T03:13:21.1634688Z     },
2026-06-20T03:13:21.1634787Z     {
2026-06-20T03:13:21.1634902Z       "id": "REQ-INST-2",
2026-06-20T03:13:21.1635046Z       "title": "Per-node files, synced Psyche mind",
2026-06-20T03:13:21.1635172Z       "requiredStages": [
2026-06-20T03:13:21.1635272Z         "impl",
2026-06-20T03:13:21.1635381Z         "unit"
2026-06-20T03:13:21.1635480Z       ],
2026-06-20T03:13:21.1635590Z       "stages": {
2026-06-20T03:13:21.1635695Z         "doc": {
2026-06-20T03:13:21.1635813Z           "complete": false,
2026-06-20T03:13:21.1635928Z           "evidence": []
2026-06-20T03:13:21.1636028Z         },
2026-06-20T03:13:21.1636137Z         "impl": {
2026-06-20T03:13:21.1636263Z           "complete": true,
2026-06-20T03:13:21.1636372Z           "evidence": [
2026-06-20T03:13:21.1636476Z             {
2026-06-20T03:13:21.1636739Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.1636940Z               "line": 108
2026-06-20T03:13:21.1637034Z             },
2026-06-20T03:13:21.1637139Z             {
2026-06-20T03:13:21.1637283Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-20T03:13:21.1637397Z               "line": 28
2026-06-20T03:13:21.1637503Z             },
2026-06-20T03:13:21.1637603Z             {
2026-06-20T03:13:21.1637772Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-20T03:13:21.1637882Z               "line": 74
2026-06-20T03:13:21.1637980Z             },
2026-06-20T03:13:21.1638084Z             {
2026-06-20T03:13:21.1638223Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-20T03:13:21.1638337Z               "line": 96
2026-06-20T03:13:21.1638452Z             },
2026-06-20T03:13:21.1638595Z             {
2026-06-20T03:13:21.1638723Z               "path": "crates/spt-live/src/resume.rs",
2026-06-20T03:13:21.1638839Z               "line": 86
2026-06-20T03:13:21.1639019Z             },
2026-06-20T03:13:21.1639120Z             {
2026-06-20T03:13:21.1639262Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-20T03:13:21.1639367Z               "line": 118
2026-06-20T03:13:21.1639478Z             }
2026-06-20T03:13:21.1639582Z           ]
2026-06-20T03:13:21.1639687Z         },
2026-06-20T03:13:21.1639798Z         "int": {
2026-06-20T03:13:21.1639915Z           "complete": false,
2026-06-20T03:13:21.1640021Z           "evidence": []
2026-06-20T03:13:21.1640122Z         },
2026-06-20T03:13:21.1640225Z         "unit": {
2026-06-20T03:13:21.1640340Z           "complete": true,
2026-06-20T03:13:21.1640437Z           "evidence": [
2026-06-20T03:13:21.1640540Z             {
2026-06-20T03:13:21.1640667Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-20T03:13:21.1640778Z               "line": 250
2026-06-20T03:13:21.1640878Z             },
2026-06-20T03:13:21.1640982Z             {
2026-06-20T03:13:21.1641127Z               "path": "crates/spt-live/src/resume.rs",
2026-06-20T03:13:21.1641235Z               "line": 280
2026-06-20T03:13:21.1641336Z             }
2026-06-20T03:13:21.1641436Z           ]
2026-06-20T03:13:21.1641541Z         }
2026-06-20T03:13:21.1641641Z       }
2026-06-20T03:13:21.1641746Z     },
2026-06-20T03:13:21.1641841Z     {
2026-06-20T03:13:21.1641950Z       "id": "REQ-INST-3",
2026-06-20T03:13:21.1642137Z       "title": "Dormant (warm) / suspended (cold) resting states",
2026-06-20T03:13:21.1642256Z       "requiredStages": [
2026-06-20T03:13:21.1642362Z         "doc",
2026-06-20T03:13:21.1642465Z         "impl",
2026-06-20T03:13:21.1642571Z         "unit"
2026-06-20T03:13:21.1642677Z       ],
2026-06-20T03:13:21.1642785Z       "stages": {
2026-06-20T03:13:21.1642894Z         "doc": {
2026-06-20T03:13:21.1643004Z           "complete": true,
2026-06-20T03:13:21.1643107Z           "evidence": [
2026-06-20T03:13:21.1643206Z             {
2026-06-20T03:13:21.1643350Z               "path": "docs/DORMANCY-BUDGET.md",
2026-06-20T03:13:21.1643454Z               "line": 3
2026-06-20T03:13:21.1643569Z             }
2026-06-20T03:13:21.1643679Z           ]
2026-06-20T03:13:21.1643783Z         },
2026-06-20T03:13:21.1643898Z         "impl": {
2026-06-20T03:13:21.1644013Z           "complete": true,
2026-06-20T03:13:21.1644126Z           "evidence": [
2026-06-20T03:13:21.1644232Z             {
2026-06-20T03:13:21.1644384Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-20T03:13:21.1644488Z               "line": 59
2026-06-20T03:13:21.1644595Z             },
2026-06-20T03:13:21.1644699Z             {
2026-06-20T03:13:21.1644852Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-20T03:13:21.1644966Z               "line": 480
2026-06-20T03:13:21.1645081Z             },
2026-06-20T03:13:21.1645176Z             {
2026-06-20T03:13:21.1645337Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.1645447Z               "line": 254
2026-06-20T03:13:21.1645652Z             },
2026-06-20T03:13:21.1645756Z             {
2026-06-20T03:13:21.1645904Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.1646116Z               "line": 384
2026-06-20T03:13:21.1646222Z             },
2026-06-20T03:13:21.1646331Z             {
2026-06-20T03:13:21.1646474Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.1646593Z               "line": 418
2026-06-20T03:13:21.1646684Z             },
2026-06-20T03:13:21.1646789Z             {
2026-06-20T03:13:21.1646942Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-20T03:13:21.1647050Z               "line": 74
2026-06-20T03:13:21.1647156Z             },
2026-06-20T03:13:21.1647260Z             {
2026-06-20T03:13:21.1647418Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.1647524Z               "line": 234
2026-06-20T03:13:21.1647633Z             },
2026-06-20T03:13:21.1647733Z             {
2026-06-20T03:13:21.1647890Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.1648009Z               "line": 396
2026-06-20T03:13:21.1648111Z             },
2026-06-20T03:13:21.1648224Z             {
2026-06-20T03:13:21.1648375Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T03:13:21.1648485Z               "line": 45
2026-06-20T03:13:21.1648587Z             },
2026-06-20T03:13:21.1648692Z             {
2026-06-20T03:13:21.1648847Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T03:13:21.1649036Z               "line": 114
2026-06-20T03:13:21.1649146Z             },
2026-06-20T03:13:21.1649245Z             {
2026-06-20T03:13:21.1649394Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T03:13:21.1649509Z               "line": 152
2026-06-20T03:13:21.1649612Z             },
2026-06-20T03:13:21.1649714Z             {
2026-06-20T03:13:21.1649857Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T03:13:21.1649965Z               "line": 168
2026-06-20T03:13:21.1650076Z             },
2026-06-20T03:13:21.1650181Z             {
2026-06-20T03:13:21.1650329Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T03:13:21.1650443Z               "line": 178
2026-06-20T03:13:21.1650547Z             },
2026-06-20T03:13:21.1650653Z             {
2026-06-20T03:13:21.1650790Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T03:13:21.1650906Z               "line": 210
2026-06-20T03:13:21.1651002Z             },
2026-06-20T03:13:21.1651105Z             {
2026-06-20T03:13:21.1651252Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T03:13:21.1651367Z               "line": 287
2026-06-20T03:13:21.1651457Z             },
2026-06-20T03:13:21.1651562Z             {
2026-06-20T03:13:21.1651705Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T03:13:21.1651819Z               "line": 311
2026-06-20T03:13:21.1651925Z             },
2026-06-20T03:13:21.1652020Z             {
2026-06-20T03:13:21.1652167Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T03:13:21.1652278Z               "line": 389
2026-06-20T03:13:21.1652387Z             },
2026-06-20T03:13:21.1652492Z             {
2026-06-20T03:13:21.1652636Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T03:13:21.1652740Z               "line": 438
2026-06-20T03:13:21.1652845Z             },
2026-06-20T03:13:21.1652946Z             {
2026-06-20T03:13:21.1653107Z               "path": "crates/spt-daemon/tests/budget.rs",
2026-06-20T03:13:21.1653213Z               "line": 37
2026-06-20T03:13:21.1653317Z             },
2026-06-20T03:13:21.1653421Z             {
2026-06-20T03:13:21.1653569Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1653681Z               "line": 62
2026-06-20T03:13:21.1653785Z             },
2026-06-20T03:13:21.1653891Z             {
2026-06-20T03:13:21.1654038Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T03:13:21.1654139Z               "line": 279
2026-06-20T03:13:21.1654348Z             },
2026-06-20T03:13:21.1654458Z             {
2026-06-20T03:13:21.1654696Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1654802Z               "line": 1848
2026-06-20T03:13:21.1654906Z             }
2026-06-20T03:13:21.1655015Z           ]
2026-06-20T03:13:21.1655126Z         },
2026-06-20T03:13:21.1655230Z         "int": {
2026-06-20T03:13:21.1664148Z           "complete": false,
2026-06-20T03:13:21.1664289Z           "evidence": []
2026-06-20T03:13:21.1664394Z         },
2026-06-20T03:13:21.1664504Z         "unit": {
2026-06-20T03:13:21.1664622Z           "complete": true,
2026-06-20T03:13:21.1664742Z           "evidence": [
2026-06-20T03:13:21.1664842Z             {
2026-06-20T03:13:21.1665008Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-20T03:13:21.1665123Z               "line": 360
2026-06-20T03:13:21.1665228Z             },
2026-06-20T03:13:21.1665323Z             {
2026-06-20T03:13:21.1665481Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.1665628Z               "line": 837
2026-06-20T03:13:21.1665739Z             },
2026-06-20T03:13:21.1665853Z             {
2026-06-20T03:13:21.1666016Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.1666138Z               "line": 894
2026-06-20T03:13:21.1666243Z             },
2026-06-20T03:13:21.1666350Z             {
2026-06-20T03:13:21.1666515Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T03:13:21.1666617Z               "line": 889
2026-06-20T03:13:21.1666712Z             },
2026-06-20T03:13:21.1666815Z             {
2026-06-20T03:13:21.1666972Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T03:13:21.1667090Z               "line": 1014
2026-06-20T03:13:21.1667189Z             },
2026-06-20T03:13:21.1667289Z             {
2026-06-20T03:13:21.1667442Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.1667551Z               "line": 1264
2026-06-20T03:13:21.1667652Z             },
2026-06-20T03:13:21.1667761Z             {
2026-06-20T03:13:21.1667934Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.1668043Z               "line": 1405
2026-06-20T03:13:21.1668152Z             },
2026-06-20T03:13:21.1668253Z             {
2026-06-20T03:13:21.1668396Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T03:13:21.1668505Z               "line": 449
2026-06-20T03:13:21.1668611Z             },
2026-06-20T03:13:21.1668715Z             {
2026-06-20T03:13:21.1668854Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T03:13:21.1669029Z               "line": 485
2026-06-20T03:13:21.1669125Z             },
2026-06-20T03:13:21.1669232Z             {
2026-06-20T03:13:21.1669377Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T03:13:21.1669486Z               "line": 540
2026-06-20T03:13:21.1669586Z             },
2026-06-20T03:13:21.1669689Z             {
2026-06-20T03:13:21.1669837Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T03:13:21.1669948Z               "line": 697
2026-06-20T03:13:21.1670061Z             },
2026-06-20T03:13:21.1670151Z             {
2026-06-20T03:13:21.1670295Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T03:13:21.1670408Z               "line": 931
2026-06-20T03:13:21.1670510Z             },
2026-06-20T03:13:21.1670615Z             {
2026-06-20T03:13:21.1670747Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T03:13:21.1670858Z               "line": 945
2026-06-20T03:13:21.1670962Z             },
2026-06-20T03:13:21.1671057Z             {
2026-06-20T03:13:21.1671210Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1671315Z               "line": 1290
2026-06-20T03:13:21.1671425Z             },
2026-06-20T03:13:21.1671525Z             {
2026-06-20T03:13:21.1671673Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T03:13:21.1671944Z               "line": 609
2026-06-20T03:13:21.1672055Z             },
2026-06-20T03:13:21.1672169Z             {
2026-06-20T03:13:21.1672391Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1672507Z               "line": 8031
2026-06-20T03:13:21.1672606Z             }
2026-06-20T03:13:21.1672711Z           ]
2026-06-20T03:13:21.1672808Z         }
2026-06-20T03:13:21.1672916Z       }
2026-06-20T03:13:21.1673021Z     },
2026-06-20T03:13:21.1673117Z     {
2026-06-20T03:13:21.1673231Z       "id": "REQ-INST-4",
2026-06-20T03:13:21.1673432Z       "title": "active to dormant/suspended fires a transition echo commune",
2026-06-20T03:13:21.1673555Z       "requiredStages": [
2026-06-20T03:13:21.1673665Z         "impl",
2026-06-20T03:13:21.1673766Z         "unit"
2026-06-20T03:13:21.1673875Z       ],
2026-06-20T03:13:21.1673980Z       "stages": {
2026-06-20T03:13:21.1674085Z         "doc": {
2026-06-20T03:13:21.1674204Z           "complete": false,
2026-06-20T03:13:21.1674319Z           "evidence": []
2026-06-20T03:13:21.1674424Z         },
2026-06-20T03:13:21.1674536Z         "impl": {
2026-06-20T03:13:21.1674665Z           "complete": true,
2026-06-20T03:13:21.1674778Z           "evidence": [
2026-06-20T03:13:21.1674868Z             {
2026-06-20T03:13:21.1675021Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.1675131Z               "line": 385
2026-06-20T03:13:21.1675230Z             },
2026-06-20T03:13:21.1675336Z             {
2026-06-20T03:13:21.1675487Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T03:13:21.1675598Z               "line": 202
2026-06-20T03:13:21.1675707Z             },
2026-06-20T03:13:21.1675812Z             {
2026-06-20T03:13:21.1675956Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T03:13:21.1676075Z               "line": 234
2026-06-20T03:13:21.1676164Z             },
2026-06-20T03:13:21.1676270Z             {
2026-06-20T03:13:21.1676423Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T03:13:21.1676552Z               "line": 274
2026-06-20T03:13:21.1676657Z             }
2026-06-20T03:13:21.1676766Z           ]
2026-06-20T03:13:21.1676877Z         },
2026-06-20T03:13:21.1676976Z         "int": {
2026-06-20T03:13:21.1677095Z           "complete": false,
2026-06-20T03:13:21.1677210Z           "evidence": []
2026-06-20T03:13:21.1677319Z         },
2026-06-20T03:13:21.1677423Z         "unit": {
2026-06-20T03:13:21.1677546Z           "complete": true,
2026-06-20T03:13:21.1677669Z           "evidence": [
2026-06-20T03:13:21.1677768Z             {
2026-06-20T03:13:21.1677917Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.1678026Z               "line": 889
2026-06-20T03:13:21.1678130Z             },
2026-06-20T03:13:21.1678232Z             {
2026-06-20T03:13:21.1678378Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T03:13:21.1678499Z               "line": 561
2026-06-20T03:13:21.1678589Z             },
2026-06-20T03:13:21.1678688Z             {
2026-06-20T03:13:21.1678837Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T03:13:21.1679032Z               "line": 668
2026-06-20T03:13:21.1679133Z             },
2026-06-20T03:13:21.1679242Z             {
2026-06-20T03:13:21.1679399Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T03:13:21.1679529Z               "line": 750
2026-06-20T03:13:21.1679633Z             }
2026-06-20T03:13:21.1679734Z           ]
2026-06-20T03:13:21.1679839Z         }
2026-06-20T03:13:21.1679937Z       }
2026-06-20T03:13:21.1680041Z     },
2026-06-20T03:13:21.1680142Z     {
2026-06-20T03:13:21.1680254Z       "id": "REQ-INST-5",
2026-06-20T03:13:21.1680469Z       "title": "Two-tier context sync (live to all, project to same-project)",
2026-06-20T03:13:21.1680573Z       "requiredStages": [
2026-06-20T03:13:21.1680683Z         "impl",
2026-06-20T03:13:21.1680784Z         "unit",
2026-06-20T03:13:21.1680893Z         "int"
2026-06-20T03:13:21.1681002Z       ],
2026-06-20T03:13:21.1681212Z       "stages": {
2026-06-20T03:13:21.1681312Z         "doc": {
2026-06-20T03:13:21.1681423Z           "complete": false,
2026-06-20T03:13:21.1681622Z           "evidence": []
2026-06-20T03:13:21.1681719Z         },
2026-06-20T03:13:21.1681828Z         "impl": {
2026-06-20T03:13:21.1681947Z           "complete": true,
2026-06-20T03:13:21.1682058Z           "evidence": [
2026-06-20T03:13:21.1682161Z             {
2026-06-20T03:13:21.1682315Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-20T03:13:21.1682424Z               "line": 85
2026-06-20T03:13:21.1682524Z             },
2026-06-20T03:13:21.1682630Z             {
2026-06-20T03:13:21.1682776Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T03:13:21.1682880Z               "line": 68
2026-06-20T03:13:21.1682986Z             },
2026-06-20T03:13:21.1683086Z             {
2026-06-20T03:13:21.1683223Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T03:13:21.1683334Z               "line": 99
2026-06-20T03:13:21.1683443Z             },
2026-06-20T03:13:21.1683552Z             {
2026-06-20T03:13:21.1683682Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T03:13:21.1683800Z               "line": 183
2026-06-20T03:13:21.1683906Z             },
2026-06-20T03:13:21.1684006Z             {
2026-06-20T03:13:21.1684139Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T03:13:21.1684255Z               "line": 314
2026-06-20T03:13:21.1684359Z             }
2026-06-20T03:13:21.1684459Z           ]
2026-06-20T03:13:21.1684565Z         },
2026-06-20T03:13:21.1684664Z         "int": {
2026-06-20T03:13:21.1684788Z           "complete": true,
2026-06-20T03:13:21.1684899Z           "evidence": [
2026-06-20T03:13:21.1685007Z             {
2026-06-20T03:13:21.1685163Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-20T03:13:21.1685268Z               "line": 156
2026-06-20T03:13:21.1685381Z             },
2026-06-20T03:13:21.1685480Z             {
2026-06-20T03:13:21.1685634Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-20T03:13:21.1685747Z               "line": 145
2026-06-20T03:13:21.1685863Z             },
2026-06-20T03:13:21.1685972Z             {
2026-06-20T03:13:21.1686119Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T03:13:21.1686240Z               "line": 707
2026-06-20T03:13:21.1686339Z             },
2026-06-20T03:13:21.1686444Z             {
2026-06-20T03:13:21.1686592Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T03:13:21.1686711Z               "line": 1069
2026-06-20T03:13:21.1686817Z             }
2026-06-20T03:13:21.1686916Z           ]
2026-06-20T03:13:21.1687011Z         },
2026-06-20T03:13:21.1687107Z         "unit": {
2026-06-20T03:13:21.1687231Z           "complete": true,
2026-06-20T03:13:21.1687336Z           "evidence": [
2026-06-20T03:13:21.1687442Z             {
2026-06-20T03:13:21.1687588Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T03:13:21.1687688Z               "line": 552
2026-06-20T03:13:21.1687799Z             },
2026-06-20T03:13:21.1687898Z             {
2026-06-20T03:13:21.1688045Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T03:13:21.1688154Z               "line": 595
2026-06-20T03:13:21.1688258Z             },
2026-06-20T03:13:21.1688367Z             {
2026-06-20T03:13:21.1688510Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-20T03:13:21.1688619Z               "line": 219
2026-06-20T03:13:21.1688720Z             }
2026-06-20T03:13:21.1688830Z           ]
2026-06-20T03:13:21.1688929Z         }
2026-06-20T03:13:21.1689135Z       }
2026-06-20T03:13:21.1689239Z     },
2026-06-20T03:13:21.1689330Z     {
2026-06-20T03:13:21.1689469Z       "id": "REQ-INST-6",
2026-06-20T03:13:21.1689669Z       "title": "Deferred messages not delivered to dormant/suspended instances",
2026-06-20T03:13:21.1689793Z       "requiredStages": [
2026-06-20T03:13:21.1689897Z         "impl",
2026-06-20T03:13:21.1690004Z         "unit",
2026-06-20T03:13:21.1690217Z         "int"
2026-06-20T03:13:21.1690319Z       ],
2026-06-20T03:13:21.1690418Z       "stages": {
2026-06-20T03:13:21.1690606Z         "doc": {
2026-06-20T03:13:21.1690717Z           "complete": true,
2026-06-20T03:13:21.1690824Z           "evidence": [
2026-06-20T03:13:21.1690923Z             {
2026-06-20T03:13:21.1691053Z               "path": "docs/DEFERRED.md",
2026-06-20T03:13:21.1691162Z               "line": 13
2026-06-20T03:13:21.1691267Z             }
2026-06-20T03:13:21.1691368Z           ]
2026-06-20T03:13:21.1691468Z         },
2026-06-20T03:13:21.1691572Z         "impl": {
2026-06-20T03:13:21.1691692Z           "complete": true,
2026-06-20T03:13:21.1691806Z           "evidence": [
2026-06-20T03:13:21.1691907Z             {
2026-06-20T03:13:21.1692063Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-20T03:13:21.1692178Z               "line": 391
2026-06-20T03:13:21.1692284Z             },
2026-06-20T03:13:21.1692388Z             {
2026-06-20T03:13:21.1692541Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-20T03:13:21.1692651Z               "line": 27
2026-06-20T03:13:21.1692760Z             },
2026-06-20T03:13:21.1692866Z             {
2026-06-20T03:13:21.1693012Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-20T03:13:21.1693113Z               "line": 73
2026-06-20T03:13:21.1693214Z             },
2026-06-20T03:13:21.1693318Z             {
2026-06-20T03:13:21.1693473Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-20T03:13:21.1693580Z               "line": 182
2026-06-20T03:13:21.1693684Z             },
2026-06-20T03:13:21.1693779Z             {
2026-06-20T03:13:21.1693928Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T03:13:21.1694041Z               "line": 426
2026-06-20T03:13:21.1694152Z             },
2026-06-20T03:13:21.1694251Z             {
2026-06-20T03:13:21.1694389Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-20T03:13:21.1694505Z               "line": 31
2026-06-20T03:13:21.1694623Z             },
2026-06-20T03:13:21.1694723Z             {
2026-06-20T03:13:21.1694877Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T03:13:21.1694986Z               "line": 202
2026-06-20T03:13:21.1695091Z             },
2026-06-20T03:13:21.1695192Z             {
2026-06-20T03:13:21.1695333Z               "path": "crates/spt/src/api/worker.rs",
2026-06-20T03:13:21.1695444Z               "line": 83
2026-06-20T03:13:21.1695553Z             },
2026-06-20T03:13:21.1695657Z             {
2026-06-20T03:13:21.1695786Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1695903Z               "line": 1849
2026-06-20T03:13:21.1696002Z             },
2026-06-20T03:13:21.1696103Z             {
2026-06-20T03:13:21.1696232Z               "path": "crates/spt/src/wansend.rs",
2026-06-20T03:13:21.1696340Z               "line": 179
2026-06-20T03:13:21.1696442Z             },
2026-06-20T03:13:21.1696533Z             {
2026-06-20T03:13:21.1696679Z               "path": "crates/spt/src/wansend.rs",
2026-06-20T03:13:21.1696790Z               "line": 215
2026-06-20T03:13:21.1696903Z             }
2026-06-20T03:13:21.1697004Z           ]
2026-06-20T03:13:21.1697109Z         },
2026-06-20T03:13:21.1697218Z         "int": {
2026-06-20T03:13:21.1697333Z           "complete": true,
2026-06-20T03:13:21.1697443Z           "evidence": [
2026-06-20T03:13:21.1697538Z             {
2026-06-20T03:13:21.1697687Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T03:13:21.1697795Z               "line": 721
2026-06-20T03:13:21.1697905Z             },
2026-06-20T03:13:21.1698011Z             {
2026-06-20T03:13:21.1698153Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T03:13:21.1698273Z               "line": 1114
2026-06-20T03:13:21.1698374Z             },
2026-06-20T03:13:21.1698482Z             {
2026-06-20T03:13:21.1698619Z               "path": "crates/spt/src/wansend.rs",
2026-06-20T03:13:21.1698738Z               "line": 726
2026-06-20T03:13:21.1698922Z             }
2026-06-20T03:13:21.1699095Z           ]
2026-06-20T03:13:21.1699203Z         },
2026-06-20T03:13:21.1699424Z         "unit": {
2026-06-20T03:13:21.1699546Z           "complete": true,
2026-06-20T03:13:21.1699648Z           "evidence": [
2026-06-20T03:13:21.1699753Z             {
2026-06-20T03:13:21.1699905Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-20T03:13:21.1700015Z               "line": 661
2026-06-20T03:13:21.1700114Z             },
2026-06-20T03:13:21.1700215Z             {
2026-06-20T03:13:21.1700362Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T03:13:21.1700472Z               "line": 899
2026-06-20T03:13:21.1700569Z             },
2026-06-20T03:13:21.1700673Z             {
2026-06-20T03:13:21.1700815Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-20T03:13:21.1700921Z               "line": 66
2026-06-20T03:13:21.1701025Z             },
2026-06-20T03:13:21.1701129Z             {
2026-06-20T03:13:21.1701281Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T03:13:21.1701394Z               "line": 297
2026-06-20T03:13:21.1701503Z             },
2026-06-20T03:13:21.1701605Z             {
2026-06-20T03:13:21.1701746Z               "path": "crates/spt/src/api/worker.rs",
2026-06-20T03:13:21.1701852Z               "line": 203
2026-06-20T03:13:21.1701957Z             }
2026-06-20T03:13:21.1702061Z           ]
2026-06-20T03:13:21.1702147Z         }
2026-06-20T03:13:21.1702257Z       }
2026-06-20T03:13:21.1702357Z     },
2026-06-20T03:13:21.1702457Z     {
2026-06-20T03:13:21.1702567Z       "id": "REQ-INST-7",
2026-06-20T03:13:21.1702738Z       "title": "Subnet registry + bare-id resolution policy",
2026-06-20T03:13:21.1702844Z       "requiredStages": [
2026-06-20T03:13:21.1702943Z         "impl",
2026-06-20T03:13:21.1703048Z         "unit",
2026-06-20T03:13:21.1703154Z         "int"
2026-06-20T03:13:21.1703258Z       ],
2026-06-20T03:13:21.1703363Z       "stages": {
2026-06-20T03:13:21.1703474Z         "doc": {
2026-06-20T03:13:21.1703592Z           "complete": false,
2026-06-20T03:13:21.1703712Z           "evidence": []
2026-06-20T03:13:21.1703827Z         },
2026-06-20T03:13:21.1703930Z         "impl": {
2026-06-20T03:13:21.1704043Z           "complete": true,
2026-06-20T03:13:21.1707432Z           "evidence": [
2026-06-20T03:13:21.1707564Z             {
2026-06-20T03:13:21.1707731Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-20T03:13:21.1707845Z               "line": 436
2026-06-20T03:13:21.1707947Z             },
2026-06-20T03:13:21.1708046Z             {
2026-06-20T03:13:21.1708223Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.1708333Z               "line": 27
2026-06-20T03:13:21.1708437Z             },
2026-06-20T03:13:21.1708538Z             {
2026-06-20T03:13:21.1708698Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.1708819Z               "line": 207
2026-06-20T03:13:21.1708915Z             },
2026-06-20T03:13:21.1709132Z             {
2026-06-20T03:13:21.1709284Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.1709402Z               "line": 344
2026-06-20T03:13:21.1709502Z             },
2026-06-20T03:13:21.1709602Z             {
2026-06-20T03:13:21.1709754Z               "path": "crates/spt-net/src/net/ndjson.rs",
2026-06-20T03:13:21.1709860Z               "line": 59
2026-06-20T03:13:21.1709960Z             },
2026-06-20T03:13:21.1710054Z             {
2026-06-20T03:13:21.1710204Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1710308Z               "line": 41
2026-06-20T03:13:21.1710407Z             },
2026-06-20T03:13:21.1710514Z             {
2026-06-20T03:13:21.1710660Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-20T03:13:21.1710770Z               "line": 27
2026-06-20T03:13:21.1710871Z             },
2026-06-20T03:13:21.1710975Z             {
2026-06-20T03:13:21.1711134Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-20T03:13:21.1711385Z               "line": 119
2026-06-20T03:13:21.1711487Z             },
2026-06-20T03:13:21.1711679Z             {
2026-06-20T03:13:21.1711846Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-20T03:13:21.1711954Z               "line": 134
2026-06-20T03:13:21.1712049Z             },
2026-06-20T03:13:21.1712145Z             {
2026-06-20T03:13:21.1712292Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T03:13:21.1712397Z               "line": 139
2026-06-20T03:13:21.1712494Z             }
2026-06-20T03:13:21.1712597Z           ]
2026-06-20T03:13:21.1712698Z         },
2026-06-20T03:13:21.1712803Z         "int": {
2026-06-20T03:13:21.1712922Z           "complete": true,
2026-06-20T03:13:21.1713027Z           "evidence": [
2026-06-20T03:13:21.1713122Z             {
2026-06-20T03:13:21.1713260Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-20T03:13:21.1713366Z               "line": 145
2026-06-20T03:13:21.1713466Z             },
2026-06-20T03:13:21.1713570Z             {
2026-06-20T03:13:21.1713724Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T03:13:21.1713828Z               "line": 665
2026-06-20T03:13:21.1713942Z             },
2026-06-20T03:13:21.1714044Z             {
2026-06-20T03:13:21.1714190Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T03:13:21.1714296Z               "line": 964
2026-06-20T03:13:21.1714406Z             }
2026-06-20T03:13:21.1714509Z           ]
2026-06-20T03:13:21.1714604Z         },
2026-06-20T03:13:21.1714710Z         "unit": {
2026-06-20T03:13:21.1714824Z           "complete": true,
2026-06-20T03:13:21.1714924Z           "evidence": [
2026-06-20T03:13:21.1715010Z             {
2026-06-20T03:13:21.1715176Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.1715282Z               "line": 1134
2026-06-20T03:13:21.1715377Z             },
2026-06-20T03:13:21.1715481Z             {
2026-06-20T03:13:21.1715630Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.1715744Z               "line": 1521
2026-06-20T03:13:21.1715848Z             },
2026-06-20T03:13:21.1715940Z             {
2026-06-20T03:13:21.1716102Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-20T03:13:21.1716211Z               "line": 84
2026-06-20T03:13:21.1716317Z             },
2026-06-20T03:13:21.1716415Z             {
2026-06-20T03:13:21.1716565Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1716678Z               "line": 812
2026-06-20T03:13:21.1716768Z             },
2026-06-20T03:13:21.1716868Z             {
2026-06-20T03:13:21.1717005Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1717118Z               "line": 823
2026-06-20T03:13:21.1717224Z             },
2026-06-20T03:13:21.1717330Z             {
2026-06-20T03:13:21.1717476Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1717592Z               "line": 838
2026-06-20T03:13:21.1717696Z             },
2026-06-20T03:13:21.1717795Z             {
2026-06-20T03:13:21.1717953Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-20T03:13:21.1718053Z               "line": 166
2026-06-20T03:13:21.1718149Z             },
2026-06-20T03:13:21.1718254Z             {
2026-06-20T03:13:21.1718400Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-20T03:13:21.1718502Z               "line": 181
2026-06-20T03:13:21.1718606Z             },
2026-06-20T03:13:21.1718715Z             {
2026-06-20T03:13:21.1718860Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-20T03:13:21.1719049Z               "line": 214
2026-06-20T03:13:21.1719156Z             }
2026-06-20T03:13:21.1719255Z           ]
2026-06-20T03:13:21.1719355Z         }
2026-06-20T03:13:21.1719442Z       }
2026-06-20T03:13:21.1719537Z     },
2026-06-20T03:13:21.1719630Z     {
2026-06-20T03:13:21.1719740Z       "id": "REQ-INST-8",
2026-06-20T03:13:21.1720028Z       "title": "Remote-control mode distinct from local operation",
2026-06-20T03:13:21.1720129Z       "requiredStages": [
2026-06-20T03:13:21.1720329Z         "impl",
2026-06-20T03:13:21.1720430Z         "unit",
2026-06-20T03:13:21.1720535Z         "int"
2026-06-20T03:13:21.1720638Z       ],
2026-06-20T03:13:21.1720745Z       "stages": {
2026-06-20T03:13:21.1720854Z         "doc": {
2026-06-20T03:13:21.1720958Z           "complete": false,
2026-06-20T03:13:21.1721064Z           "evidence": []
2026-06-20T03:13:21.1721158Z         },
2026-06-20T03:13:21.1721263Z         "impl": {
2026-06-20T03:13:21.1721374Z           "complete": true,
2026-06-20T03:13:21.1721492Z           "evidence": [
2026-06-20T03:13:21.1721592Z             {
2026-06-20T03:13:21.1721742Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-20T03:13:21.1721845Z               "line": 104
2026-06-20T03:13:21.1721946Z             },
2026-06-20T03:13:21.1722052Z             {
2026-06-20T03:13:21.1722192Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-20T03:13:21.1722312Z               "line": 321
2026-06-20T03:13:21.1722416Z             },
2026-06-20T03:13:21.1722524Z             {
2026-06-20T03:13:21.1722667Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-20T03:13:21.1722777Z               "line": 361
2026-06-20T03:13:21.1722876Z             },
2026-06-20T03:13:21.1722962Z             {
2026-06-20T03:13:21.1723101Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-20T03:13:21.1723205Z               "line": 62
2026-06-20T03:13:21.1723302Z             }
2026-06-20T03:13:21.1723411Z           ]
2026-06-20T03:13:21.1723510Z         },
2026-06-20T03:13:21.1723617Z         "int": {
2026-06-20T03:13:21.1723730Z           "complete": true,
2026-06-20T03:13:21.1723830Z           "evidence": [
2026-06-20T03:13:21.1723936Z             {
2026-06-20T03:13:21.1724088Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-20T03:13:21.1724192Z               "line": 415
2026-06-20T03:13:21.1724299Z             },
2026-06-20T03:13:21.1724402Z             {
2026-06-20T03:13:21.1724542Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T03:13:21.1724651Z               "line": 1028
2026-06-20T03:13:21.1724760Z             }
2026-06-20T03:13:21.1724857Z           ]
2026-06-20T03:13:21.1724961Z         },
2026-06-20T03:13:21.1725064Z         "unit": {
2026-06-20T03:13:21.1725179Z           "complete": true,
2026-06-20T03:13:21.1725289Z           "evidence": [
2026-06-20T03:13:21.1725398Z             {
2026-06-20T03:13:21.1725546Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T03:13:21.1725651Z               "line": 366
2026-06-20T03:13:21.1725760Z             },
2026-06-20T03:13:21.1725857Z             {
2026-06-20T03:13:21.1726004Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T03:13:21.1726113Z               "line": 633
2026-06-20T03:13:21.1726219Z             },
2026-06-20T03:13:21.1726323Z             {
2026-06-20T03:13:21.1726471Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-20T03:13:21.1726586Z               "line": 116
2026-06-20T03:13:21.1726690Z             },
2026-06-20T03:13:21.1726796Z             {
2026-06-20T03:13:21.1726924Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-20T03:13:21.1727043Z               "line": 160
2026-06-20T03:13:21.1727150Z             }
2026-06-20T03:13:21.1727248Z           ]
2026-06-20T03:13:21.1727352Z         }
2026-06-20T03:13:21.1727452Z       }
2026-06-20T03:13:21.1727551Z     },
2026-06-20T03:13:21.1727650Z     {
2026-06-20T03:13:21.1727755Z       "id": "REQ-INST-9",
2026-06-20T03:13:21.1727970Z       "title": "Multi-subnet membership (same-user N subnets; cross-user seam)",
2026-06-20T03:13:21.1728074Z       "requiredStages": [
2026-06-20T03:13:21.1728176Z         "impl",
2026-06-20T03:13:21.1728270Z         "unit"
2026-06-20T03:13:21.1728370Z       ],
2026-06-20T03:13:21.1728476Z       "stages": {
2026-06-20T03:13:21.1728580Z         "doc": {
2026-06-20T03:13:21.1728781Z           "complete": false,
2026-06-20T03:13:21.1728890Z           "evidence": []
2026-06-20T03:13:21.1729138Z         },
2026-06-20T03:13:21.1729238Z         "impl": {
2026-06-20T03:13:21.1729353Z           "complete": true,
2026-06-20T03:13:21.1729467Z           "evidence": [
2026-06-20T03:13:21.1729572Z             {
2026-06-20T03:13:21.1729725Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1729829Z               "line": 449
2026-06-20T03:13:21.1729934Z             }
2026-06-20T03:13:21.1730031Z           ]
2026-06-20T03:13:21.1730130Z         },
2026-06-20T03:13:21.1730229Z         "int": {
2026-06-20T03:13:21.1730339Z           "complete": false,
2026-06-20T03:13:21.1730442Z           "evidence": []
2026-06-20T03:13:21.1730540Z         },
2026-06-20T03:13:21.1730651Z         "unit": {
2026-06-20T03:13:21.1730751Z           "complete": true,
2026-06-20T03:13:21.1730865Z           "evidence": [
2026-06-20T03:13:21.1730971Z             {
2026-06-20T03:13:21.1731128Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1731237Z               "line": 1397
2026-06-20T03:13:21.1731343Z             },
2026-06-20T03:13:21.1731448Z             {
2026-06-20T03:13:21.1731590Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1731696Z               "line": 1406
2026-06-20T03:13:21.1731805Z             },
2026-06-20T03:13:21.1731900Z             {
2026-06-20T03:13:21.1732048Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1732157Z               "line": 1422
2026-06-20T03:13:21.1732254Z             },
2026-06-20T03:13:21.1732354Z             {
2026-06-20T03:13:21.1732496Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1732602Z               "line": 1434
2026-06-20T03:13:21.1732701Z             },
2026-06-20T03:13:21.1732805Z             {
2026-06-20T03:13:21.1732948Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.1733060Z               "line": 1454
2026-06-20T03:13:21.1733160Z             }
2026-06-20T03:13:21.1733266Z           ]
2026-06-20T03:13:21.1733375Z         }
2026-06-20T03:13:21.1733475Z       }
2026-06-20T03:13:21.1733576Z     },
2026-06-20T03:13:21.1733667Z     {
2026-06-20T03:13:21.1733790Z       "id": "REQ-INSTALL-1",
2026-06-20T03:13:21.1734005Z       "title": "Two install paths; signed one-line script; OS-service registration",
2026-06-20T03:13:21.1734123Z       "requiredStages": [
2026-06-20T03:13:21.1734220Z         "doc",
2026-06-20T03:13:21.1734324Z         "impl",
2026-06-20T03:13:21.1734429Z         "int"
2026-06-20T03:13:21.1734520Z       ],
2026-06-20T03:13:21.1734624Z       "stages": {
2026-06-20T03:13:21.1734729Z         "doc": {
2026-06-20T03:13:21.1734849Z           "complete": true,
2026-06-20T03:13:21.1734948Z           "evidence": [
2026-06-20T03:13:21.1735039Z             {
2026-06-20T03:13:21.1735164Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.1735267Z               "line": 754
2026-06-20T03:13:21.1735378Z             }
2026-06-20T03:13:21.1735469Z           ]
2026-06-20T03:13:21.1735578Z         },
2026-06-20T03:13:21.1735686Z         "impl": {
2026-06-20T03:13:21.1735792Z           "complete": true,
2026-06-20T03:13:21.1735897Z           "evidence": [
2026-06-20T03:13:21.1735982Z             {
2026-06-20T03:13:21.1736116Z               "path": "installer/install.ps1",
2026-06-20T03:13:21.1736226Z               "line": 57
2026-06-20T03:13:21.1736330Z             },
2026-06-20T03:13:21.1736436Z             {
2026-06-20T03:13:21.1736564Z               "path": "installer/install.sh",
2026-06-20T03:13:21.1736678Z               "line": 52
2026-06-20T03:13:21.1736780Z             }
2026-06-20T03:13:21.1736884Z           ]
2026-06-20T03:13:21.1736979Z         },
2026-06-20T03:13:21.1737085Z         "int": {
2026-06-20T03:13:21.1737198Z           "complete": true,
2026-06-20T03:13:21.1737308Z           "evidence": [
2026-06-20T03:13:21.1737409Z             {
2026-06-20T03:13:21.1737690Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-20T03:13:21.1737799Z               "line": 21
2026-06-20T03:13:21.1737993Z             }
2026-06-20T03:13:21.1738097Z           ]
2026-06-20T03:13:21.1738206Z         },
2026-06-20T03:13:21.1738310Z         "unit": {
2026-06-20T03:13:21.1738416Z           "complete": false,
2026-06-20T03:13:21.1738520Z           "evidence": []
2026-06-20T03:13:21.1738625Z         }
2026-06-20T03:13:21.1738726Z       }
2026-06-20T03:13:21.1738830Z     },
2026-06-20T03:13:21.1738930Z     {
2026-06-20T03:13:21.1739144Z       "id": "REQ-INSTALL-10",
2026-06-20T03:13:21.1740601Z       "title": "Windows at-logon autostart runs the daemon in the background with no persistent window: the scheduled task launches `spt daemon start` (which spawn_detaches a console-less DETACHED_PROCESS daemon and exits) rather than the foreground `spt daemon run` — Task Scheduler's interactive ONLOGON launch of a long-lived console process otherwise leaves a visible console window for the daemon's whole lifetime (v0.7.4)",
2026-06-20T03:13:21.1740742Z       "requiredStages": [
2026-06-20T03:13:21.1740860Z         "impl",
2026-06-20T03:13:21.1740960Z         "unit"
2026-06-20T03:13:21.1741063Z       ],
2026-06-20T03:13:21.1741158Z       "stages": {
2026-06-20T03:13:21.1741264Z         "doc": {
2026-06-20T03:13:21.1741388Z           "complete": false,
2026-06-20T03:13:21.1741497Z           "evidence": []
2026-06-20T03:13:21.1741588Z         },
2026-06-20T03:13:21.1741697Z         "impl": {
2026-06-20T03:13:21.1741802Z           "complete": true,
2026-06-20T03:13:21.1741908Z           "evidence": [
2026-06-20T03:13:21.1742008Z             {
2026-06-20T03:13:21.1742150Z               "path": "installer/install.ps1",
2026-06-20T03:13:21.1742256Z               "line": 191
2026-06-20T03:13:21.1742360Z             }
2026-06-20T03:13:21.1742465Z           ]
2026-06-20T03:13:21.1742561Z         },
2026-06-20T03:13:21.1742660Z         "int": {
2026-06-20T03:13:21.1742776Z           "complete": false,
2026-06-20T03:13:21.1742900Z           "evidence": []
2026-06-20T03:13:21.1743014Z         },
2026-06-20T03:13:21.1743144Z         "unit": {
2026-06-20T03:13:21.1743252Z           "complete": true,
2026-06-20T03:13:21.1743360Z           "evidence": [
2026-06-20T03:13:21.1743456Z             {
2026-06-20T03:13:21.1743606Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-20T03:13:21.1743711Z               "line": 211
2026-06-20T03:13:21.1743802Z             }
2026-06-20T03:13:21.1743912Z           ]
2026-06-20T03:13:21.1744011Z         }
2026-06-20T03:13:21.1744112Z       }
2026-06-20T03:13:21.1744217Z     },
2026-06-20T03:13:21.1744311Z     {
2026-06-20T03:13:21.1744427Z       "id": "REQ-INSTALL-11",
2026-06-20T03:13:21.1746251Z       "title": "Adapter command templates resolve their program against the adapter's install dir BEFORE PATH: a `.spt`-shipped binary (dropped to adapters/_github/<safe>/ by --release/--github acquisition, or kept in the source_dir under copy-mode where only manifest+strings/ are copied to adapters/<name>) runs without any PATH placement — a bare-name template token (e.g. `claude-spt-digest ...`) is rewritten to <install_dir>/<program>(.exe on Windows) when that file exists, else left bare for the PATH fallback. Makes a `.spt` self-contained (closes the --release bundled-binary gap perri confirmed) (v0.7.4)",
2026-06-20T03:13:21.1746381Z       "requiredStages": [
2026-06-20T03:13:21.1746490Z         "doc",
2026-06-20T03:13:21.1746590Z         "impl",
2026-06-20T03:13:21.1746696Z         "unit"
2026-06-20T03:13:21.1746796Z       ],
2026-06-20T03:13:21.1746904Z       "stages": {
2026-06-20T03:13:21.1747011Z         "doc": {
2026-06-20T03:13:21.1747111Z           "complete": true,
2026-06-20T03:13:21.1747209Z           "evidence": [
2026-06-20T03:13:21.1747311Z             {
2026-06-20T03:13:21.1747444Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.1747548Z               "line": 138
2026-06-20T03:13:21.1747645Z             },
2026-06-20T03:13:21.1747873Z             {
2026-06-20T03:13:21.1748002Z               "path": "docs/MANIFEST.md",
2026-06-20T03:13:21.1748211Z               "line": 82
2026-06-20T03:13:21.1748317Z             }
2026-06-20T03:13:21.1748416Z           ]
2026-06-20T03:13:21.1748515Z         },
2026-06-20T03:13:21.1748630Z         "impl": {
2026-06-20T03:13:21.1748751Z           "complete": true,
2026-06-20T03:13:21.1748856Z           "evidence": [
2026-06-20T03:13:21.1749381Z             {
2026-06-20T03:13:21.1749534Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-20T03:13:21.1749653Z               "line": 223
2026-06-20T03:13:21.1749757Z             },
2026-06-20T03:13:21.1749868Z             {
2026-06-20T03:13:21.1750025Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.1750134Z               "line": 99
2026-06-20T03:13:21.1750240Z             },
2026-06-20T03:13:21.1750344Z             {
2026-06-20T03:13:21.1750498Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.1750620Z               "line": 117
2026-06-20T03:13:21.1750721Z             },
2026-06-20T03:13:21.1750832Z             {
2026-06-20T03:13:21.1750978Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T03:13:21.1751084Z               "line": 332
2026-06-20T03:13:21.1751185Z             },
2026-06-20T03:13:21.1751283Z             {
2026-06-20T03:13:21.1751435Z               "path": "crates/spt-live/src/digest.rs",
2026-06-20T03:13:21.1762095Z               "line": 88
2026-06-20T03:13:21.1762221Z             },
2026-06-20T03:13:21.1762327Z             {
2026-06-20T03:13:21.1762494Z               "path": "crates/spt-live/src/digest.rs",
2026-06-20T03:13:21.1762598Z               "line": 104
2026-06-20T03:13:21.1762705Z             },
2026-06-20T03:13:21.1762837Z             {
2026-06-20T03:13:21.1762995Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.1763105Z               "line": 297
2026-06-20T03:13:21.1763199Z             },
2026-06-20T03:13:21.1763334Z             {
2026-06-20T03:13:21.1763490Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.1763605Z               "line": 332
2026-06-20T03:13:21.1763705Z             },
2026-06-20T03:13:21.1763809Z             {
2026-06-20T03:13:21.1763968Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.1764071Z               "line": 523
2026-06-20T03:13:21.1764177Z             },
2026-06-20T03:13:21.1764278Z             {
2026-06-20T03:13:21.1764424Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.1764528Z               "line": 546
2026-06-20T03:13:21.1764629Z             },
2026-06-20T03:13:21.1764731Z             {
2026-06-20T03:13:21.1764884Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.1765004Z               "line": 561
2026-06-20T03:13:21.1765108Z             },
2026-06-20T03:13:21.1765213Z             {
2026-06-20T03:13:21.1765342Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T03:13:21.1765451Z               "line": 492
2026-06-20T03:13:21.1765557Z             }
2026-06-20T03:13:21.1765662Z           ]
2026-06-20T03:13:21.1765761Z         },
2026-06-20T03:13:21.1765867Z         "int": {
2026-06-20T03:13:21.1765985Z           "complete": false,
2026-06-20T03:13:21.1766100Z           "evidence": []
2026-06-20T03:13:21.1766201Z         },
2026-06-20T03:13:21.1766310Z         "unit": {
2026-06-20T03:13:21.1766424Z           "complete": true,
2026-06-20T03:13:21.1766540Z           "evidence": [
2026-06-20T03:13:21.1766648Z             {
2026-06-20T03:13:21.1766797Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.1766906Z               "line": 799
2026-06-20T03:13:21.1767011Z             },
2026-06-20T03:13:21.1767116Z             {
2026-06-20T03:13:21.1767253Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.1767367Z               "line": 811
2026-06-20T03:13:21.1767477Z             },
2026-06-20T03:13:21.1767578Z             {
2026-06-20T03:13:21.1767892Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.1768098Z               "line": 820
2026-06-20T03:13:21.1768202Z             }
2026-06-20T03:13:21.1768297Z           ]
2026-06-20T03:13:21.1768402Z         }
2026-06-20T03:13:21.1768507Z       }
2026-06-20T03:13:21.1768602Z     },
2026-06-20T03:13:21.1768708Z     {
2026-06-20T03:13:21.1768827Z       "id": "REQ-INSTALL-12",
2026-06-20T03:13:21.1771651Z       "title": "Durable active-profile pointer for bind-time profile selection (ADR-0021): adapters/active-profiles.toml at the registry ROOT (sibling to the per-adapter <name>/ dirs, so adapter add/update/remove — which only rewrite a <name>/ subdir — can never clobber it), a flat host_binary → \"adapter[:profile]\" map. Read at bind as the PRIMARY profile selector; unset → the registered_at_ms fallback (REQ-START-5). Written ONLY by `spt adapter use <adapter>[:profile]` (resolves the adapter's host_binaries → sets each binary→adapter[:profile]); `spt adapter use --clear <adapter|binary>` drops. NEVER auto-written by install/update/adapter add (that is precisely what would let an update silently flip the active profile). A stale pointer (uninstalled adapter / deleted profile) self-heals: ignored, fall back, warn once. Pruned on adapter remove. Atomic write (spt_store atomic). (v0.9.0)",
2026-06-20T03:13:21.1771827Z       "requiredStages": [
2026-06-20T03:13:21.1771933Z         "doc",
2026-06-20T03:13:21.1772042Z         "impl",
2026-06-20T03:13:21.1772147Z         "unit",
2026-06-20T03:13:21.1772248Z         "int"
2026-06-20T03:13:21.1772357Z       ],
2026-06-20T03:13:21.1772460Z       "stages": {
2026-06-20T03:13:21.1772565Z         "doc": {
2026-06-20T03:13:21.1772674Z           "complete": true,
2026-06-20T03:13:21.1772781Z           "evidence": [
2026-06-20T03:13:21.1772887Z             {
2026-06-20T03:13:21.1773002Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.1773110Z               "line": 185
2026-06-20T03:13:21.1773207Z             }
2026-06-20T03:13:21.1773331Z           ]
2026-06-20T03:13:21.1773430Z         },
2026-06-20T03:13:21.1773536Z         "impl": {
2026-06-20T03:13:21.1773650Z           "complete": true,
2026-06-20T03:13:21.1773764Z           "evidence": [
2026-06-20T03:13:21.1773861Z             {
2026-06-20T03:13:21.1774018Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-20T03:13:21.1774132Z               "line": 27
2026-06-20T03:13:21.1774223Z             },
2026-06-20T03:13:21.1774326Z             {
2026-06-20T03:13:21.1774476Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-20T03:13:21.1774590Z               "line": 223
2026-06-20T03:13:21.1774699Z             },
2026-06-20T03:13:21.1774801Z             {
2026-06-20T03:13:21.1774937Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1775046Z               "line": 5677
2026-06-20T03:13:21.1775146Z             }
2026-06-20T03:13:21.1775255Z           ]
2026-06-20T03:13:21.1775344Z         },
2026-06-20T03:13:21.1775454Z         "int": {
2026-06-20T03:13:21.1775565Z           "complete": true,
2026-06-20T03:13:21.1775677Z           "evidence": [
2026-06-20T03:13:21.1775783Z             {
2026-06-20T03:13:21.1775945Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-20T03:13:21.1776049Z               "line": 19
2026-06-20T03:13:21.1776155Z             }
2026-06-20T03:13:21.1776255Z           ]
2026-06-20T03:13:21.1776359Z         },
2026-06-20T03:13:21.1776461Z         "unit": {
2026-06-20T03:13:21.1776580Z           "complete": true,
2026-06-20T03:13:21.1776698Z           "evidence": [
2026-06-20T03:13:21.1776799Z             {
2026-06-20T03:13:21.1776951Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-20T03:13:21.1777071Z               "line": 395
2026-06-20T03:13:21.1777170Z             },
2026-06-20T03:13:21.1777280Z             {
2026-06-20T03:13:21.1777415Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-20T03:13:21.1777527Z               "line": 421
2026-06-20T03:13:21.1777739Z             },
2026-06-20T03:13:21.1777842Z             {
2026-06-20T03:13:21.1777994Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-20T03:13:21.1778213Z               "line": 440
2026-06-20T03:13:21.1778319Z             },
2026-06-20T03:13:21.1778419Z             {
2026-06-20T03:13:21.1778566Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-20T03:13:21.1778677Z               "line": 475
2026-06-20T03:13:21.1778777Z             },
2026-06-20T03:13:21.1778886Z             {
2026-06-20T03:13:21.1779091Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1779205Z               "line": 8665
2026-06-20T03:13:21.1779302Z             }
2026-06-20T03:13:21.1779410Z           ]
2026-06-20T03:13:21.1779515Z         }
2026-06-20T03:13:21.1779612Z       }
2026-06-20T03:13:21.1779716Z     },
2026-06-20T03:13:21.1779815Z     {
2026-06-20T03:13:21.1779936Z       "id": "REQ-INSTALL-2",
2026-06-20T03:13:21.1780101Z       "title": "Marketplace-repackaging-friendly install",
2026-06-20T03:13:21.1780215Z       "requiredStages": [
2026-06-20T03:13:21.1780315Z         "doc"
2026-06-20T03:13:21.1780413Z       ],
2026-06-20T03:13:21.1780527Z       "stages": {
2026-06-20T03:13:21.1780633Z         "doc": {
2026-06-20T03:13:21.1780752Z           "complete": true,
2026-06-20T03:13:21.1780862Z           "evidence": [
2026-06-20T03:13:21.1780967Z             {
2026-06-20T03:13:21.1781095Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.1781200Z               "line": 755
2026-06-20T03:13:21.1781310Z             }
2026-06-20T03:13:21.1781409Z           ]
2026-06-20T03:13:21.1781520Z         },
2026-06-20T03:13:21.1781625Z         "impl": {
2026-06-20T03:13:21.1781738Z           "complete": false,
2026-06-20T03:13:21.1781854Z           "evidence": []
2026-06-20T03:13:21.1781948Z         },
2026-06-20T03:13:21.1782058Z         "int": {
2026-06-20T03:13:21.1782159Z           "complete": false,
2026-06-20T03:13:21.1782268Z           "evidence": []
2026-06-20T03:13:21.1782378Z         },
2026-06-20T03:13:21.1782484Z         "unit": {
2026-06-20T03:13:21.1782606Z           "complete": false,
2026-06-20T03:13:21.1782712Z           "evidence": []
2026-06-20T03:13:21.1782823Z         }
2026-06-20T03:13:21.1782921Z       }
2026-06-20T03:13:21.1783006Z     },
2026-06-20T03:13:21.1783106Z     {
2026-06-20T03:13:21.1783229Z       "id": "REQ-INSTALL-3",
2026-06-20T03:13:21.1783399Z       "title": "Idempotent + interactive-optional first run",
2026-06-20T03:13:21.1783524Z       "requiredStages": [
2026-06-20T03:13:21.1783633Z         "impl",
2026-06-20T03:13:21.1783738Z         "int"
2026-06-20T03:13:21.1783844Z       ],
2026-06-20T03:13:21.1783952Z       "stages": {
2026-06-20T03:13:21.1784053Z         "doc": {
2026-06-20T03:13:21.1784163Z           "complete": false,
2026-06-20T03:13:21.1784267Z           "evidence": []
2026-06-20T03:13:21.1784373Z         },
2026-06-20T03:13:21.1784478Z         "impl": {
2026-06-20T03:13:21.1784601Z           "complete": true,
2026-06-20T03:13:21.1784716Z           "evidence": [
2026-06-20T03:13:21.1784821Z             {
2026-06-20T03:13:21.1784959Z               "path": "installer/install.ps1",
2026-06-20T03:13:21.1785070Z               "line": 100
2026-06-20T03:13:21.1785169Z             },
2026-06-20T03:13:21.1785269Z             {
2026-06-20T03:13:21.1785408Z               "path": "installer/install.ps1",
2026-06-20T03:13:21.1785516Z               "line": 111
2026-06-20T03:13:21.1785620Z             },
2026-06-20T03:13:21.1785721Z             {
2026-06-20T03:13:21.1785847Z               "path": "installer/install.sh",
2026-06-20T03:13:21.1785952Z               "line": 79
2026-06-20T03:13:21.1786057Z             }
2026-06-20T03:13:21.1786162Z           ]
2026-06-20T03:13:21.1786261Z         },
2026-06-20T03:13:21.1786372Z         "int": {
2026-06-20T03:13:21.1786487Z           "complete": true,
2026-06-20T03:13:21.1786600Z           "evidence": [
2026-06-20T03:13:21.1786706Z             {
2026-06-20T03:13:21.1786848Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-20T03:13:21.1787082Z               "line": 167
2026-06-20T03:13:21.1787182Z             }
2026-06-20T03:13:21.1787383Z           ]
2026-06-20T03:13:21.1787488Z         },
2026-06-20T03:13:21.1787588Z         "unit": {
2026-06-20T03:13:21.1787707Z           "complete": false,
2026-06-20T03:13:21.1787807Z           "evidence": []
2026-06-20T03:13:21.1787903Z         }
2026-06-20T03:13:21.1788008Z       }
2026-06-20T03:13:21.1788107Z     },
2026-06-20T03:13:21.1788208Z     {
2026-06-20T03:13:21.1788328Z       "id": "REQ-INSTALL-4",
2026-06-20T03:13:21.1789070Z       "title": "Adapter registration lifecycle: spt adapter add (--github, manifest-first, install-is-first-update) + soft-deregister remove + optional manifest uninstall template; node-local registered-adapter set self-update ripples over",
2026-06-20T03:13:21.1789184Z       "requiredStages": [
2026-06-20T03:13:21.1789285Z         "impl",
2026-06-20T03:13:21.1789380Z         "unit"
2026-06-20T03:13:21.1789489Z       ],
2026-06-20T03:13:21.1789609Z       "stages": {
2026-06-20T03:13:21.1789713Z         "doc": {
2026-06-20T03:13:21.1789838Z           "complete": false,
2026-06-20T03:13:21.1789938Z           "evidence": []
2026-06-20T03:13:21.1790047Z         },
2026-06-20T03:13:21.1790148Z         "impl": {
2026-06-20T03:13:21.1790267Z           "complete": true,
2026-06-20T03:13:21.1790380Z           "evidence": [
2026-06-20T03:13:21.1790482Z             {
2026-06-20T03:13:21.1790652Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T03:13:21.1790765Z               "line": 165
2026-06-20T03:13:21.1790866Z             },
2026-06-20T03:13:21.1790969Z             {
2026-06-20T03:13:21.1791131Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.1791237Z               "line": 29
2026-06-20T03:13:21.1791335Z             },
2026-06-20T03:13:21.1791436Z             {
2026-06-20T03:13:21.1791585Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.1791707Z               "line": 288
2026-06-20T03:13:21.1791804Z             },
2026-06-20T03:13:21.1791904Z             {
2026-06-20T03:13:21.1792066Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.1792180Z               "line": 356
2026-06-20T03:13:21.1792284Z             },
2026-06-20T03:13:21.1792390Z             {
2026-06-20T03:13:21.1792537Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.1792637Z               "line": 386
2026-06-20T03:13:21.1792729Z             },
2026-06-20T03:13:21.1792838Z             {
2026-06-20T03:13:21.1792981Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.1793092Z               "line": 434
2026-06-20T03:13:21.1793195Z             },
2026-06-20T03:13:21.1793301Z             {
2026-06-20T03:13:21.1793435Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1793552Z               "line": 5396
2026-06-20T03:13:21.1793652Z             }
2026-06-20T03:13:21.1793748Z           ]
2026-06-20T03:13:21.1793855Z         },
2026-06-20T03:13:21.1793954Z         "int": {
2026-06-20T03:13:21.1794080Z           "complete": false,
2026-06-20T03:13:21.1794193Z           "evidence": []
2026-06-20T03:13:21.1794288Z         },
2026-06-20T03:13:21.1794399Z         "unit": {
2026-06-20T03:13:21.1794508Z           "complete": true,
2026-06-20T03:13:21.1794623Z           "evidence": [
2026-06-20T03:13:21.1794723Z             {
2026-06-20T03:13:21.1794880Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T03:13:21.1794986Z               "line": 375
2026-06-20T03:13:21.1795095Z             },
2026-06-20T03:13:21.1795204Z             {
2026-06-20T03:13:21.1795344Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.1795462Z               "line": 808
2026-06-20T03:13:21.1795557Z             },
2026-06-20T03:13:21.1795663Z             {
2026-06-20T03:13:21.1795815Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.1796020Z               "line": 849
2026-06-20T03:13:21.1796133Z             },
2026-06-20T03:13:21.1796233Z             {
2026-06-20T03:13:21.1796474Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.1796579Z               "line": 869
2026-06-20T03:13:21.1796680Z             },
2026-06-20T03:13:21.1796779Z             {
2026-06-20T03:13:21.1796914Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1797028Z               "line": 8403
2026-06-20T03:13:21.1797131Z             }
2026-06-20T03:13:21.1797233Z           ]
2026-06-20T03:13:21.1797333Z         }
2026-06-20T03:13:21.1797437Z       }
2026-06-20T03:13:21.1797529Z     },
2026-06-20T03:13:21.1797628Z     {
2026-06-20T03:13:21.1797742Z       "id": "REQ-INSTALL-5",
2026-06-20T03:13:21.1798253Z       "title": "Non-interactive install path: the canonical one-liner doubles as every adapter's pack-in on-demand install (no second mechanism); sha256-verified fetch; user-PATH registration",
2026-06-20T03:13:21.1798381Z       "requiredStages": [
2026-06-20T03:13:21.1798488Z         "impl",
2026-06-20T03:13:21.1798591Z         "int"
2026-06-20T03:13:21.1798711Z       ],
2026-06-20T03:13:21.1798812Z       "stages": {
2026-06-20T03:13:21.1798925Z         "doc": {
2026-06-20T03:13:21.1799110Z           "complete": false,
2026-06-20T03:13:21.1799225Z           "evidence": []
2026-06-20T03:13:21.1802602Z         },
2026-06-20T03:13:21.1802745Z         "impl": {
2026-06-20T03:13:21.1802873Z           "complete": true,
2026-06-20T03:13:21.1802975Z           "evidence": [
2026-06-20T03:13:21.1803083Z             {
2026-06-20T03:13:21.1803226Z               "path": "installer/install.ps1",
2026-06-20T03:13:21.1803332Z               "line": 5
2026-06-20T03:13:21.1803436Z             },
2026-06-20T03:13:21.1803541Z             {
2026-06-20T03:13:21.1803685Z               "path": "installer/install.sh",
2026-06-20T03:13:21.1803779Z               "line": 6
2026-06-20T03:13:21.1803885Z             }
2026-06-20T03:13:21.1803981Z           ]
2026-06-20T03:13:21.1804089Z         },
2026-06-20T03:13:21.1804197Z         "int": {
2026-06-20T03:13:21.1804317Z           "complete": true,
2026-06-20T03:13:21.1804429Z           "evidence": [
2026-06-20T03:13:21.1804529Z             {
2026-06-20T03:13:21.1804688Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-20T03:13:21.1804796Z               "line": 22
2026-06-20T03:13:21.1804902Z             }
2026-06-20T03:13:21.1805002Z           ]
2026-06-20T03:13:21.1805101Z         },
2026-06-20T03:13:21.1805203Z         "unit": {
2026-06-20T03:13:21.1805312Z           "complete": false,
2026-06-20T03:13:21.1805425Z           "evidence": []
2026-06-20T03:13:21.1805527Z         }
2026-06-20T03:13:21.1805626Z       }
2026-06-20T03:13:21.1805726Z     },
2026-06-20T03:13:21.1805832Z     {
2026-06-20T03:13:21.1805941Z       "id": "REQ-INSTALL-6",
2026-06-20T03:13:21.1807216Z       "title": "Linux elevation install leg: install.sh symlinks the binary into a sudo-reachable path (/usr/local/bin; graceful print-the-one-liner when unelevated) so sudo spt resolves; first sudo spt detects elevation and prompts ONCE for the default user account — thereafter any elevated daemon launch runs daemon + state under that account, never root (KH 5.7 interplay verified) (M8 decision 8)",
2026-06-20T03:13:21.1807344Z       "requiredStages": [
2026-06-20T03:13:21.1807449Z         "impl",
2026-06-20T03:13:21.1807550Z         "unit"
2026-06-20T03:13:21.1807644Z       ],
2026-06-20T03:13:21.1807745Z       "stages": {
2026-06-20T03:13:21.1807850Z         "doc": {
2026-06-20T03:13:21.1807954Z           "complete": false,
2026-06-20T03:13:21.1808070Z           "evidence": []
2026-06-20T03:13:21.1808174Z         },
2026-06-20T03:13:21.1808279Z         "impl": {
2026-06-20T03:13:21.1808384Z           "complete": true,
2026-06-20T03:13:21.1808484Z           "evidence": [
2026-06-20T03:13:21.1808589Z             {
2026-06-20T03:13:21.1808733Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.1808841Z               "line": 61
2026-06-20T03:13:21.1809199Z             },
2026-06-20T03:13:21.1809309Z             {
2026-06-20T03:13:21.1809566Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.1809670Z               "line": 641
2026-06-20T03:13:21.1809771Z             },
2026-06-20T03:13:21.1809871Z             {
2026-06-20T03:13:21.1810014Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T03:13:21.1810124Z               "line": 191
2026-06-20T03:13:21.1810228Z             },
2026-06-20T03:13:21.1810329Z             {
2026-06-20T03:13:21.1810477Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T03:13:21.1810580Z               "line": 276
2026-06-20T03:13:21.1810682Z             },
2026-06-20T03:13:21.1810786Z             {
2026-06-20T03:13:21.1810914Z               "path": "crates/spt/src/main.rs",
2026-06-20T03:13:21.1811016Z               "line": 43
2026-06-20T03:13:21.1811125Z             },
2026-06-20T03:13:21.1811224Z             {
2026-06-20T03:13:21.1811368Z               "path": "installer/install.sh",
2026-06-20T03:13:21.1811472Z               "line": 104
2026-06-20T03:13:21.1811583Z             }
2026-06-20T03:13:21.1811678Z           ]
2026-06-20T03:13:21.1811782Z         },
2026-06-20T03:13:21.1811891Z         "int": {
2026-06-20T03:13:21.1811996Z           "complete": false,
2026-06-20T03:13:21.1812104Z           "evidence": []
2026-06-20T03:13:21.1812198Z         },
2026-06-20T03:13:21.1812299Z         "unit": {
2026-06-20T03:13:21.1812409Z           "complete": true,
2026-06-20T03:13:21.1812518Z           "evidence": [
2026-06-20T03:13:21.1812619Z             {
2026-06-20T03:13:21.1812761Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T03:13:21.1812866Z               "line": 894
2026-06-20T03:13:21.1812967Z             }
2026-06-20T03:13:21.1813062Z           ]
2026-06-20T03:13:21.1813162Z         }
2026-06-20T03:13:21.1813263Z       }
2026-06-20T03:13:21.1813353Z     },
2026-06-20T03:13:21.1813447Z     {
2026-06-20T03:13:21.1813577Z       "id": "REQ-INSTALL-7",
2026-06-20T03:13:21.1814739Z       "title": "Windows inbound reachability: the elevated install leg registers the inbound-UDP firewall rule (New-NetFirewallRule); the daemon self-detects blocked inbound and renders it as the no-connection state in subnet status + the coming-online banner (covers user-scope installs that skip the elevated leg — never a silent NO_SEED_HOLDER dead-end) (M8 root cause 3)",
2026-06-20T03:13:21.1814868Z       "requiredStages": [
2026-06-20T03:13:21.1814976Z         "impl"
2026-06-20T03:13:21.1815075Z       ],
2026-06-20T03:13:21.1815171Z       "stages": {
2026-06-20T03:13:21.1815267Z         "doc": {
2026-06-20T03:13:21.1815385Z           "complete": false,
2026-06-20T03:13:21.1815491Z           "evidence": []
2026-06-20T03:13:21.1815596Z         },
2026-06-20T03:13:21.1815700Z         "impl": {
2026-06-20T03:13:21.1815811Z           "complete": true,
2026-06-20T03:13:21.1815925Z           "evidence": [
2026-06-20T03:13:21.1816034Z             {
2026-06-20T03:13:21.1816187Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1816315Z               "line": 3920
2026-06-20T03:13:21.1816417Z             },
2026-06-20T03:13:21.1816521Z             {
2026-06-20T03:13:21.1816654Z               "path": "installer/install.ps1",
2026-06-20T03:13:21.1816760Z               "line": 157
2026-06-20T03:13:21.1816854Z             }
2026-06-20T03:13:21.1816949Z           ]
2026-06-20T03:13:21.1817051Z         },
2026-06-20T03:13:21.1817160Z         "int": {
2026-06-20T03:13:21.1817273Z           "complete": false,
2026-06-20T03:13:21.1817392Z           "evidence": []
2026-06-20T03:13:21.1817496Z         },
2026-06-20T03:13:21.1817599Z         "unit": {
2026-06-20T03:13:21.1817709Z           "complete": false,
2026-06-20T03:13:21.1817815Z           "evidence": []
2026-06-20T03:13:21.1817918Z         }
2026-06-20T03:13:21.1818024Z       }
2026-06-20T03:13:21.1818124Z     },
2026-06-20T03:13:21.1818228Z     {
2026-06-20T03:13:21.1818458Z       "id": "REQ-INSTALL-8",
2026-06-20T03:13:21.1819661Z       "title": "OS-service registration (REQ-INSTALL-1's deferred third leg): Linux systemd USER service + loginctl enable-linger (linger rides the elevated install leg; daemon starts at boot pre-login, user universe per KH 5.7, systemctl --user managed); Windows scheduled task at-logon (interactive session, no stored credentials); a node is reachable after reboot without any manual spt invocation (M8 decision 17)",
2026-06-20T03:13:21.1819879Z       "requiredStages": [
2026-06-20T03:13:21.1819985Z         "impl"
2026-06-20T03:13:21.1820087Z       ],
2026-06-20T03:13:21.1820192Z       "stages": {
2026-06-20T03:13:21.1820298Z         "doc": {
2026-06-20T03:13:21.1820402Z           "complete": false,
2026-06-20T03:13:21.1820507Z           "evidence": []
2026-06-20T03:13:21.1820613Z         },
2026-06-20T03:13:21.1820717Z         "impl": {
2026-06-20T03:13:21.1820831Z           "complete": true,
2026-06-20T03:13:21.1820942Z           "evidence": [
2026-06-20T03:13:21.1821055Z             {
2026-06-20T03:13:21.1821189Z               "path": "installer/install.ps1",
2026-06-20T03:13:21.1821303Z               "line": 184
2026-06-20T03:13:21.1821408Z             },
2026-06-20T03:13:21.1821504Z             {
2026-06-20T03:13:21.1821632Z               "path": "installer/install.sh",
2026-06-20T03:13:21.1821742Z               "line": 121
2026-06-20T03:13:21.1821843Z             }
2026-06-20T03:13:21.1821943Z           ]
2026-06-20T03:13:21.1822047Z         },
2026-06-20T03:13:21.1822158Z         "int": {
2026-06-20T03:13:21.1822267Z           "complete": false,
2026-06-20T03:13:21.1822380Z           "evidence": []
2026-06-20T03:13:21.1822470Z         },
2026-06-20T03:13:21.1822579Z         "unit": {
2026-06-20T03:13:21.1822688Z           "complete": false,
2026-06-20T03:13:21.1822802Z           "evidence": []
2026-06-20T03:13:21.1822903Z         }
2026-06-20T03:13:21.1822998Z       }
2026-06-20T03:13:21.1823103Z     },
2026-06-20T03:13:21.1823203Z     {
2026-06-20T03:13:21.1823321Z       "id": "REQ-INSTALL-9",
2026-06-20T03:13:21.1824561Z       "title": "Adapter add from a GitHub release archive: `spt adapter add --release <user/repo> [--tag <tag>] [--asset <name>]` fetches a `.spt` tar asset over HTTPS+GitHub trust, extracts it to the durable adapters/_github home, and registers the root — ships built binaries source-free and versioned (the distribution path for an adapter whose dev repo is a monorepo subdir, where --github root-only clone does not fit)",
2026-06-20T03:13:21.1824691Z       "requiredStages": [
2026-06-20T03:13:21.1824791Z         "doc",
2026-06-20T03:13:21.1824895Z         "impl",
2026-06-20T03:13:21.1825001Z         "unit"
2026-06-20T03:13:21.1825101Z       ],
2026-06-20T03:13:21.1825205Z       "stages": {
2026-06-20T03:13:21.1825313Z         "doc": {
2026-06-20T03:13:21.1825423Z           "complete": true,
2026-06-20T03:13:21.1825531Z           "evidence": [
2026-06-20T03:13:21.1825630Z             {
2026-06-20T03:13:21.1825751Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.1825870Z               "line": 771
2026-06-20T03:13:21.1825979Z             }
2026-06-20T03:13:21.1826085Z           ]
2026-06-20T03:13:21.1826175Z         },
2026-06-20T03:13:21.1826284Z         "impl": {
2026-06-20T03:13:21.1826395Z           "complete": true,
2026-06-20T03:13:21.1826504Z           "evidence": [
2026-06-20T03:13:21.1826604Z             {
2026-06-20T03:13:21.1826733Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1826847Z               "line": 2535
2026-06-20T03:13:21.1826947Z             },
2026-06-20T03:13:21.1827053Z             {
2026-06-20T03:13:21.1827186Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1827297Z               "line": 2559
2026-06-20T03:13:21.1827396Z             }
2026-06-20T03:13:21.1827496Z           ]
2026-06-20T03:13:21.1827597Z         },
2026-06-20T03:13:21.1827697Z         "int": {
2026-06-20T03:13:21.1827814Z           "complete": false,
2026-06-20T03:13:21.1827914Z           "evidence": []
2026-06-20T03:13:21.1828131Z         },
2026-06-20T03:13:21.1828236Z         "unit": {
2026-06-20T03:13:21.1828351Z           "complete": true,
2026-06-20T03:13:21.1828541Z           "evidence": [
2026-06-20T03:13:21.1828642Z             {
2026-06-20T03:13:21.1828770Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1828880Z               "line": 7591
2026-06-20T03:13:21.1829042Z             },
2026-06-20T03:13:21.1829141Z             {
2026-06-20T03:13:21.1829276Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1829381Z               "line": 8433
2026-06-20T03:13:21.1829481Z             }
2026-06-20T03:13:21.1829582Z           ]
2026-06-20T03:13:21.1829686Z         }
2026-06-20T03:13:21.1829781Z       }
2026-06-20T03:13:21.1829882Z     },
2026-06-20T03:13:21.1829986Z     {
2026-06-20T03:13:21.1830100Z       "id": "REQ-KICK-1",
2026-06-20T03:13:21.1832621Z       "title": "Explicit, loud controller displacement: `spt rc kick <target>` / `--take` (Take intent) kicks the incumbent controller and becomes controller; the displaced controller receives a LOUD `Displaced{by}` notice and is FULLY DETACHED (not demoted to a viewer). A default attach to a controlled endpoint is NEVER a silent displace (it is the Control busy-refusal). An old (N-1) rc omits intent → Control, so it can drive a free endpoint but CANNOT `--take` — it can never silently steal, and gets a clean busy-refusal instead. Taking control rides the same access_check(endpoint, origin, Unsolicited) as a normal control attach (if you may drive, you may take — no elevated kick policy). The picker surfaces 'Kick <node> and attach' (Take) only on a controlled (blue ■) endpoint, via the existing attach dispatch (single-bringup-path: intent is a parameter).",
2026-06-20T03:13:21.1832771Z       "requiredStages": [
2026-06-20T03:13:21.1832874Z         "doc",
2026-06-20T03:13:21.1832978Z         "impl",
2026-06-20T03:13:21.1833088Z         "unit",
2026-06-20T03:13:21.1833182Z         "int"
2026-06-20T03:13:21.1833291Z       ],
2026-06-20T03:13:21.1833415Z       "stages": {
2026-06-20T03:13:21.1833520Z         "doc": {
2026-06-20T03:13:21.1833648Z           "complete": true,
2026-06-20T03:13:21.1833759Z           "evidence": [
2026-06-20T03:13:21.1833863Z             {
2026-06-20T03:13:21.1833972Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.1834078Z               "line": 342
2026-06-20T03:13:21.1834182Z             }
2026-06-20T03:13:21.1834282Z           ]
2026-06-20T03:13:21.1834388Z         },
2026-06-20T03:13:21.1834493Z         "impl": {
2026-06-20T03:13:21.1834611Z           "complete": true,
2026-06-20T03:13:21.1834717Z           "evidence": [
2026-06-20T03:13:21.1834822Z             {
2026-06-20T03:13:21.1834975Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-20T03:13:21.1835088Z               "line": 41
2026-06-20T03:13:21.1835193Z             },
2026-06-20T03:13:21.1835294Z             {
2026-06-20T03:13:21.1835421Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.1835537Z               "line": 524
2026-06-20T03:13:21.1835643Z             }
2026-06-20T03:13:21.1835736Z           ]
2026-06-20T03:13:21.1835836Z         },
2026-06-20T03:13:21.1835941Z         "int": {
2026-06-20T03:13:21.1836058Z           "complete": true,
2026-06-20T03:13:21.1836172Z           "evidence": [
2026-06-20T03:13:21.1836273Z             {
2026-06-20T03:13:21.1836425Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T03:13:21.1836544Z               "line": 913
2026-06-20T03:13:21.1836635Z             }
2026-06-20T03:13:21.1836735Z           ]
2026-06-20T03:13:21.1836834Z         },
2026-06-20T03:13:21.1836936Z         "unit": {
2026-06-20T03:13:21.1837036Z           "complete": true,
2026-06-20T03:13:21.1837140Z           "evidence": [
2026-06-20T03:13:21.1837246Z             {
2026-06-20T03:13:21.1837393Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-20T03:13:21.1837503Z               "line": 205
2026-06-20T03:13:21.1837608Z             }
2026-06-20T03:13:21.1837808Z           ]
2026-06-20T03:13:21.1837913Z         }
2026-06-20T03:13:21.1838017Z       }
2026-06-20T03:13:21.1838205Z     },
2026-06-20T03:13:21.1838303Z     {
2026-06-20T03:13:21.1838431Z       "id": "REQ-MANIFEST-1",
2026-06-20T03:13:21.1838648Z       "title": "Per-adapter manifest with adapter_name and min_spt_core_version",
2026-06-20T03:13:21.1838772Z       "requiredStages": [
2026-06-20T03:13:21.1838868Z         "doc",
2026-06-20T03:13:21.1839034Z         "impl",
2026-06-20T03:13:21.1839145Z         "unit"
2026-06-20T03:13:21.1839245Z       ],
2026-06-20T03:13:21.1839354Z       "stages": {
2026-06-20T03:13:21.1839455Z         "doc": {
2026-06-20T03:13:21.1839569Z           "complete": true,
2026-06-20T03:13:21.1839683Z           "evidence": [
2026-06-20T03:13:21.1839784Z             {
2026-06-20T03:13:21.1839907Z               "path": "docs/MANIFEST.md",
2026-06-20T03:13:21.1840016Z               "line": 19
2026-06-20T03:13:21.1840123Z             }
2026-06-20T03:13:21.1840222Z           ]
2026-06-20T03:13:21.1840327Z         },
2026-06-20T03:13:21.1840433Z         "impl": {
2026-06-20T03:13:21.1840541Z           "complete": true,
2026-06-20T03:13:21.1840655Z           "evidence": [
2026-06-20T03:13:21.1840762Z             {
2026-06-20T03:13:21.1840918Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.1841024Z               "line": 18
2026-06-20T03:13:21.1841124Z             }
2026-06-20T03:13:21.1841223Z           ]
2026-06-20T03:13:21.1841327Z         },
2026-06-20T03:13:21.1841428Z         "int": {
2026-06-20T03:13:21.1841537Z           "complete": false,
2026-06-20T03:13:21.1841647Z           "evidence": []
2026-06-20T03:13:21.1841743Z         },
2026-06-20T03:13:21.1841843Z         "unit": {
2026-06-20T03:13:21.1841956Z           "complete": true,
2026-06-20T03:13:21.1842067Z           "evidence": [
2026-06-20T03:13:21.1842167Z             {
2026-06-20T03:13:21.1842324Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.1842434Z               "line": 1029
2026-06-20T03:13:21.1842538Z             },
2026-06-20T03:13:21.1842634Z             {
2026-06-20T03:13:21.1842777Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.1842891Z               "line": 1325
2026-06-20T03:13:21.1842997Z             },
2026-06-20T03:13:21.1843101Z             {
2026-06-20T03:13:21.1843244Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.1843355Z               "line": 1337
2026-06-20T03:13:21.1843458Z             },
2026-06-20T03:13:21.1843557Z             {
2026-06-20T03:13:21.1843710Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.1843817Z               "line": 1348
2026-06-20T03:13:21.1843918Z             },
2026-06-20T03:13:21.1844018Z             {
2026-06-20T03:13:21.1844160Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.1844266Z               "line": 1365
2026-06-20T03:13:21.1844361Z             },
2026-06-20T03:13:21.1844465Z             {
2026-06-20T03:13:21.1844615Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.1844729Z               "line": 1379
2026-06-20T03:13:21.1844833Z             },
2026-06-20T03:13:21.1844929Z             {
2026-06-20T03:13:21.1845086Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.1845191Z               "line": 1495
2026-06-20T03:13:21.1845296Z             },
2026-06-20T03:13:21.1845401Z             {
2026-06-20T03:13:21.1845535Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.1845644Z               "line": 1510
2026-06-20T03:13:21.1845744Z             },
2026-06-20T03:13:21.1845841Z             {
2026-06-20T03:13:21.1845982Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.1846087Z               "line": 1621
2026-06-20T03:13:21.1846189Z             },
2026-06-20T03:13:21.1846293Z             {
2026-06-20T03:13:21.1846443Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.1846661Z               "line": 1632
2026-06-20T03:13:21.1846765Z             }
2026-06-20T03:13:21.1846957Z           ]
2026-06-20T03:13:21.1847061Z         }
2026-06-20T03:13:21.1847167Z       }
2026-06-20T03:13:21.1847268Z     },
2026-06-20T03:13:21.1847371Z     {
2026-06-20T03:13:21.1847492Z       "id": "REQ-MANIFEST-2",
2026-06-20T03:13:21.1848030Z       "title": "Adapter profiles — sparse leaf-replace overlays (shipped + local), composite <adapter>:<profile> addressing, shadow-refusal, tighten-only consent floors",
2026-06-20T03:13:21.1848154Z       "requiredStages": [
2026-06-20T03:13:21.1848263Z         "doc",
2026-06-20T03:13:21.1848373Z         "impl",
2026-06-20T03:13:21.1848474Z         "unit"
2026-06-20T03:13:21.1848582Z       ],
2026-06-20T03:13:21.1848688Z       "stages": {
2026-06-20T03:13:21.1848798Z         "doc": {
2026-06-20T03:13:21.1848906Z           "complete": true,
2026-06-20T03:13:21.1849111Z           "evidence": [
2026-06-20T03:13:21.1849204Z             {
2026-06-20T03:13:21.1849347Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.1849457Z               "line": 75
2026-06-20T03:13:21.1849575Z             }
2026-06-20T03:13:21.1849671Z           ]
2026-06-20T03:13:21.1849772Z         },
2026-06-20T03:13:21.1849880Z         "impl": {
2026-06-20T03:13:21.1849991Z           "complete": true,
2026-06-20T03:13:21.1850091Z           "evidence": [
2026-06-20T03:13:21.1850186Z             {
2026-06-20T03:13:21.1850330Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.1850453Z               "line": 82
2026-06-20T03:13:21.1850553Z             },
2026-06-20T03:13:21.1850644Z             {
2026-06-20T03:13:21.1850797Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T03:13:21.1850906Z               "line": 15
2026-06-20T03:13:21.1851012Z             },
2026-06-20T03:13:21.1851111Z             {
2026-06-20T03:13:21.1851260Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T03:13:21.1851378Z               "line": 65
2026-06-20T03:13:21.1851478Z             },
2026-06-20T03:13:21.1851585Z             {
2026-06-20T03:13:21.1851740Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T03:13:21.1851863Z               "line": 83
2026-06-20T03:13:21.1851955Z             },
2026-06-20T03:13:21.1852060Z             {
2026-06-20T03:13:21.1852207Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T03:13:21.1852312Z               "line": 183
2026-06-20T03:13:21.1852412Z             },
2026-06-20T03:13:21.1852511Z             {
2026-06-20T03:13:21.1852665Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.1852774Z               "line": 527
2026-06-20T03:13:21.1852894Z             },
2026-06-20T03:13:21.1852994Z             {
2026-06-20T03:13:21.1853136Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.1853252Z               "line": 553
2026-06-20T03:13:21.1853356Z             },
2026-06-20T03:13:21.1853460Z             {
2026-06-20T03:13:21.1853604Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.1853718Z               "line": 671
2026-06-20T03:13:21.1853824Z             },
2026-06-20T03:13:21.1853924Z             {
2026-06-20T03:13:21.1854075Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.1854180Z               "line": 696
2026-06-20T03:13:21.1854288Z             },
2026-06-20T03:13:21.1854387Z             {
2026-06-20T03:13:21.1854540Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.1854655Z               "line": 719
2026-06-20T03:13:21.1854764Z             },
2026-06-20T03:13:21.1854865Z             {
2026-06-20T03:13:21.1855012Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.1855117Z               "line": 734
2026-06-20T03:13:21.1855222Z             },
2026-06-20T03:13:21.1855327Z             {
2026-06-20T03:13:21.1855461Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1855688Z               "line": 5567
2026-06-20T03:13:21.1855786Z             },
2026-06-20T03:13:21.1855890Z             {
2026-06-20T03:13:21.1856101Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1856214Z               "line": 5581
2026-06-20T03:13:21.1856318Z             },
2026-06-20T03:13:21.1856420Z             {
2026-06-20T03:13:21.1856552Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1856672Z               "line": 5615
2026-06-20T03:13:21.1856768Z             }
2026-06-20T03:13:21.1856876Z           ]
2026-06-20T03:13:21.1856975Z         },
2026-06-20T03:13:21.1857090Z         "int": {
2026-06-20T03:13:21.1857202Z           "complete": false,
2026-06-20T03:13:21.1857307Z           "evidence": []
2026-06-20T03:13:21.1857398Z         },
2026-06-20T03:13:21.1857494Z         "unit": {
2026-06-20T03:13:21.1857612Z           "complete": true,
2026-06-20T03:13:21.1857713Z           "evidence": [
2026-06-20T03:13:21.1857818Z             {
2026-06-20T03:13:21.1857979Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T03:13:21.1858090Z               "line": 921
2026-06-20T03:13:21.1858203Z             },
2026-06-20T03:13:21.1858303Z             {
2026-06-20T03:13:21.1858456Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T03:13:21.1858565Z               "line": 211
2026-06-20T03:13:21.1858662Z             },
2026-06-20T03:13:21.1858757Z             {
2026-06-20T03:13:21.1858904Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T03:13:21.1859086Z               "line": 272
2026-06-20T03:13:21.1859176Z             },
2026-06-20T03:13:21.1859283Z             {
2026-06-20T03:13:21.1859433Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T03:13:21.1859542Z               "line": 313
2026-06-20T03:13:21.1859647Z             },
2026-06-20T03:13:21.1859746Z             {
2026-06-20T03:13:21.1859897Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T03:13:21.1860003Z               "line": 325
2026-06-20T03:13:21.1860107Z             },
2026-06-20T03:13:21.1860212Z             {
2026-06-20T03:13:21.1860355Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T03:13:21.1860460Z               "line": 336
2026-06-20T03:13:21.1860551Z             },
2026-06-20T03:13:21.1860656Z             {
2026-06-20T03:13:21.1860798Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T03:13:21.1860900Z               "line": 345
2026-06-20T03:13:21.1861008Z             },
2026-06-20T03:13:21.1861108Z             {
2026-06-20T03:13:21.1861253Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T03:13:21.1861362Z               "line": 361
2026-06-20T03:13:21.1861467Z             },
2026-06-20T03:13:21.1861558Z             {
2026-06-20T03:13:21.1861705Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T03:13:21.1861810Z               "line": 444
2026-06-20T03:13:21.1861911Z             },
2026-06-20T03:13:21.1862004Z             {
2026-06-20T03:13:21.1862159Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.1862273Z               "line": 958
2026-06-20T03:13:21.1862371Z             },
2026-06-20T03:13:21.1862476Z             {
2026-06-20T03:13:21.1862625Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.1862724Z               "line": 982
2026-06-20T03:13:21.1862829Z             },
2026-06-20T03:13:21.1862925Z             {
2026-06-20T03:13:21.1863072Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.1863174Z               "line": 1008
2026-06-20T03:13:21.1863282Z             },
2026-06-20T03:13:21.1863391Z             {
2026-06-20T03:13:21.1863535Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.1863653Z               "line": 1027
2026-06-20T03:13:21.1863755Z             },
2026-06-20T03:13:21.1863859Z             {
2026-06-20T03:13:21.1864002Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.1864221Z               "line": 1058
2026-06-20T03:13:21.1864326Z             },
2026-06-20T03:13:21.1864423Z             {
2026-06-20T03:13:21.1864668Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-20T03:13:21.1864783Z               "line": 309
2026-06-20T03:13:21.1864890Z             },
2026-06-20T03:13:21.1864995Z             {
2026-06-20T03:13:21.1865125Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T03:13:21.1865229Z               "line": 606
2026-06-20T03:13:21.1865319Z             },
2026-06-20T03:13:21.1865425Z             {
2026-06-20T03:13:21.1865539Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1865648Z               "line": 8610
2026-06-20T03:13:21.1865754Z             },
2026-06-20T03:13:21.1865853Z             {
2026-06-20T03:13:21.1865992Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1866107Z               "line": 9558
2026-06-20T03:13:21.1866211Z             }
2026-06-20T03:13:21.1866307Z           ]
2026-06-20T03:13:21.1866412Z         }
2026-06-20T03:13:21.1866511Z       }
2026-06-20T03:13:21.1866612Z     },
2026-06-20T03:13:21.1866722Z     {
2026-06-20T03:13:21.1866841Z       "id": "REQ-MANIFEST-3",
2026-06-20T03:13:21.1867484Z       "title": "Adapter strings — [strings] KV tree, dot-path get-string resolving through the profile leaf-replace overlay, set-string editing a local profile's [strings] only; data-only (nothing executes a string)",
2026-06-20T03:13:21.1867607Z       "requiredStages": [
2026-06-20T03:13:21.1867711Z         "doc",
2026-06-20T03:13:21.1867810Z         "impl",
2026-06-20T03:13:21.1867915Z         "unit"
2026-06-20T03:13:21.1868016Z       ],
2026-06-20T03:13:21.1868120Z       "stages": {
2026-06-20T03:13:21.1868225Z         "doc": {
2026-06-20T03:13:21.1868335Z           "complete": true,
2026-06-20T03:13:21.1868439Z           "evidence": [
2026-06-20T03:13:21.1868544Z             {
2026-06-20T03:13:21.1868669Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.1868778Z               "line": 81
2026-06-20T03:13:21.1868898Z             }
2026-06-20T03:13:21.1869093Z           ]
2026-06-20T03:13:21.1869188Z         },
2026-06-20T03:13:21.1869308Z         "impl": {
2026-06-20T03:13:21.1869427Z           "complete": true,
2026-06-20T03:13:21.1869533Z           "evidence": [
2026-06-20T03:13:21.1869637Z             {
2026-06-20T03:13:21.1869789Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.1869909Z               "line": 92
2026-06-20T03:13:21.1870008Z             },
2026-06-20T03:13:21.1870107Z             {
2026-06-20T03:13:21.1870255Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T03:13:21.1870362Z               "line": 101
2026-06-20T03:13:21.1870467Z             },
2026-06-20T03:13:21.1870559Z             {
2026-06-20T03:13:21.1870705Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T03:13:21.1870811Z               "line": 132
2026-06-20T03:13:21.1870907Z             },
2026-06-20T03:13:21.1871011Z             {
2026-06-20T03:13:21.1871159Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.1871269Z               "line": 577
2026-06-20T03:13:21.1871377Z             },
2026-06-20T03:13:21.1871474Z             {
2026-06-20T03:13:21.1871622Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.1871736Z               "line": 633
2026-06-20T03:13:21.1871841Z             },
2026-06-20T03:13:21.1871946Z             {
2026-06-20T03:13:21.1872085Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1872189Z               "line": 5628
2026-06-20T03:13:21.1872294Z             },
2026-06-20T03:13:21.1872405Z             {
2026-06-20T03:13:21.1872537Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1872641Z               "line": 5654
2026-06-20T03:13:21.1872734Z             }
2026-06-20T03:13:21.1872838Z           ]
2026-06-20T03:13:21.1872936Z         },
2026-06-20T03:13:21.1873046Z         "int": {
2026-06-20T03:13:21.1873167Z           "complete": false,
2026-06-20T03:13:21.1873380Z           "evidence": []
2026-06-20T03:13:21.1873485Z         },
2026-06-20T03:13:21.1873676Z         "unit": {
2026-06-20T03:13:21.1873795Z           "complete": true,
2026-06-20T03:13:21.1873899Z           "evidence": [
2026-06-20T03:13:21.1874005Z             {
2026-06-20T03:13:21.1874157Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T03:13:21.1874276Z               "line": 371
2026-06-20T03:13:21.1874382Z             },
2026-06-20T03:13:21.1874486Z             {
2026-06-20T03:13:21.1874635Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T03:13:21.1874744Z               "line": 429
2026-06-20T03:13:21.1874848Z             },
2026-06-20T03:13:21.1874949Z             {
2026-06-20T03:13:21.1875096Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.1875210Z               "line": 1082
2026-06-20T03:13:21.1875310Z             },
2026-06-20T03:13:21.1875414Z             {
2026-06-20T03:13:21.1875555Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1875671Z               "line": 8703
2026-06-20T03:13:21.1875775Z             }
2026-06-20T03:13:21.1875874Z           ]
2026-06-20T03:13:21.1875976Z         }
2026-06-20T03:13:21.1876076Z       }
2026-06-20T03:13:21.1876180Z     },
2026-06-20T03:13:21.1876272Z     {
2026-06-20T03:13:21.1876391Z       "id": "REQ-MANIFEST-4",
2026-06-20T03:13:21.1877129Z       "title": "Keyword hints — [[hints]] {keywords (literal/regex), text}; spt api hint --session emits at most one matched hint per message, once per session (seen-set), declaration-order first match; profiles overlay [[hints]] by leaf-replace",
2026-06-20T03:13:21.1877254Z       "requiredStages": [
2026-06-20T03:13:21.1877367Z         "doc",
2026-06-20T03:13:21.1877472Z         "impl",
2026-06-20T03:13:21.1877579Z         "unit"
2026-06-20T03:13:21.1877677Z       ],
2026-06-20T03:13:21.1877787Z       "stages": {
2026-06-20T03:13:21.1877894Z         "doc": {
2026-06-20T03:13:21.1878020Z           "complete": true,
2026-06-20T03:13:21.1878134Z           "evidence": [
2026-06-20T03:13:21.1878234Z             {
2026-06-20T03:13:21.1878375Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.1878489Z               "line": 88
2026-06-20T03:13:21.1878595Z             }
2026-06-20T03:13:21.1878699Z           ]
2026-06-20T03:13:21.1878795Z         },
2026-06-20T03:13:21.1878905Z         "impl": {
2026-06-20T03:13:21.1879075Z           "complete": true,
2026-06-20T03:13:21.1879191Z           "evidence": [
2026-06-20T03:13:21.1879286Z             {
2026-06-20T03:13:21.1879448Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.1879562Z               "line": 100
2026-06-20T03:13:21.1879662Z             },
2026-06-20T03:13:21.1879768Z             {
2026-06-20T03:13:21.1879915Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.1880029Z               "line": 183
2026-06-20T03:13:21.1880131Z             },
2026-06-20T03:13:21.1880234Z             {
2026-06-20T03:13:21.1880384Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1880493Z               "line": 83
2026-06-20T03:13:21.1880606Z             },
2026-06-20T03:13:21.1880710Z             {
2026-06-20T03:13:21.1880866Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.1880974Z               "line": 629
2026-06-20T03:13:21.1881081Z             },
2026-06-20T03:13:21.1881176Z             {
2026-06-20T03:13:21.1881318Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.1881429Z               "line": 654
2026-06-20T03:13:21.1881529Z             }
2026-06-20T03:13:21.1881628Z           ]
2026-06-20T03:13:21.1881734Z         },
2026-06-20T03:13:21.1881843Z         "int": {
2026-06-20T03:13:21.1881962Z           "complete": false,
2026-06-20T03:13:21.1882072Z           "evidence": []
2026-06-20T03:13:21.1882177Z         },
2026-06-20T03:13:21.1882277Z         "unit": {
2026-06-20T03:13:21.1882397Z           "complete": true,
2026-06-20T03:13:21.1882611Z           "evidence": [
2026-06-20T03:13:21.1882721Z             {
2026-06-20T03:13:21.1882970Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.1883078Z               "line": 1445
2026-06-20T03:13:21.1883178Z             },
2026-06-20T03:13:21.1883279Z             {
2026-06-20T03:13:21.1883430Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.1883544Z               "line": 1478
2026-06-20T03:13:21.1883649Z             },
2026-06-20T03:13:21.1883750Z             {
2026-06-20T03:13:21.1883892Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.1884013Z               "line": 988
2026-06-20T03:13:21.1884107Z             }
2026-06-20T03:13:21.1884212Z           ]
2026-06-20T03:13:21.1884322Z         }
2026-06-20T03:13:21.1884427Z       }
2026-06-20T03:13:21.1884536Z     },
2026-06-20T03:13:21.1884637Z     {
2026-06-20T03:13:21.1884751Z       "id": "REQ-MANIFEST-5",
2026-06-20T03:13:21.1887642Z       "title": "File-backed adapter [strings] (M12-W3-T3.1): a [strings] dot-path value MAY be an inline-table FILE POINTER `key = { file = \"rel/path\" }` resolved to the file's contents at get-string time, keeping large bodies (skill-instructions, hint text) out of the manifest. A value-position table with a `file` key IS the pointer form (reserved — cannot double as data). Per-adapter aux storage `adapters/<adapter>/strings/`; pointers resolve relative to it with CONTAINMENT (reject `..`/absolute escaping the dir). UPDATE-SAFETY: a LOCAL profile's file-pointers resolve relative to the user-owned local-profile dir (NOT adapter-shipped strings/, which adapter updates overwrite), or the local profile inlines. Validate-at-register (fail-fast on a bad/escaping/missing pointer) + LAZY read at get-string (live file edits reflect, no re-register) + skip-diagnostics on missing-at-read (no hard-crash, mirrors [digest]). Rides the same leaf-replace profile overlay as the rest of [strings].",
2026-06-20T03:13:21.1887795Z       "requiredStages": [
2026-06-20T03:13:21.1887899Z         "doc",
2026-06-20T03:13:21.1888008Z         "impl",
2026-06-20T03:13:21.1888120Z         "unit"
2026-06-20T03:13:21.1888228Z       ],
2026-06-20T03:13:21.1888333Z       "stages": {
2026-06-20T03:13:21.1891323Z         "doc": {
2026-06-20T03:13:21.1891469Z           "complete": true,
2026-06-20T03:13:21.1891583Z           "evidence": [
2026-06-20T03:13:21.1891693Z             {
2026-06-20T03:13:21.1891816Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.1891922Z               "line": 83
2026-06-20T03:13:21.1892008Z             }
2026-06-20T03:13:21.1892117Z           ]
2026-06-20T03:13:21.1892212Z         },
2026-06-20T03:13:21.1892318Z         "impl": {
2026-06-20T03:13:21.1892432Z           "complete": true,
2026-06-20T03:13:21.1892542Z           "evidence": [
2026-06-20T03:13:21.1892647Z             {
2026-06-20T03:13:21.1892804Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T03:13:21.1892915Z               "line": 120
2026-06-20T03:13:21.1893028Z             }
2026-06-20T03:13:21.1893133Z           ]
2026-06-20T03:13:21.1893234Z         },
2026-06-20T03:13:21.1893342Z         "int": {
2026-06-20T03:13:21.1893462Z           "complete": false,
2026-06-20T03:13:21.1893573Z           "evidence": []
2026-06-20T03:13:21.1893671Z         },
2026-06-20T03:13:21.1893777Z         "unit": {
2026-06-20T03:13:21.1893888Z           "complete": true,
2026-06-20T03:13:21.1894004Z           "evidence": [
2026-06-20T03:13:21.1894090Z             {
2026-06-20T03:13:21.1894244Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T03:13:21.1894357Z               "line": 404
2026-06-20T03:13:21.1894457Z             },
2026-06-20T03:13:21.1894558Z             {
2026-06-20T03:13:21.1894705Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.1894811Z               "line": 1155
2026-06-20T03:13:21.1894916Z             },
2026-06-20T03:13:21.1895020Z             {
2026-06-20T03:13:21.1895164Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.1895411Z               "line": 1184
2026-06-20T03:13:21.1895588Z             },
2026-06-20T03:13:21.1895692Z             {
2026-06-20T03:13:21.1895841Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.1895949Z               "line": 1224
2026-06-20T03:13:21.1896055Z             },
2026-06-20T03:13:21.1896156Z             {
2026-06-20T03:13:21.1896301Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.1896411Z               "line": 1239
2026-06-20T03:13:21.1896515Z             }
2026-06-20T03:13:21.1896605Z           ]
2026-06-20T03:13:21.1896700Z         }
2026-06-20T03:13:21.1896796Z       }
2026-06-20T03:13:21.1896891Z     },
2026-06-20T03:13:21.1896985Z     {
2026-06-20T03:13:21.1897101Z       "id": "REQ-MANIFEST-6",
2026-06-20T03:13:21.1899420Z       "title": "Cross-adapter fallback target addressing (M12-W3-T3.2): a cross-adapter fallback target is addressed as `<adapter>:<profile>` (not just a bare adapter_name), resolved through the one composite-addressing resolver (registry::resolve_option) at every adapter-option read site so a fallback may select a shipped/local profile (e.g. a `ccs` profile). CONTEXT.md §cross-adapter-fallback reconciled (\"ccs is a profile; cross-adapter fallback may target <adapter>:<profile>\"). Contract-only this milestone: the node-wide fallback SETTING + its rate-limit invocation are deferred to the consuming milestone (the runtime path does not exist yet); this REQ guarantees the ADDRESSING resolves.",
2026-06-20T03:13:21.1899557Z       "requiredStages": [
2026-06-20T03:13:21.1899663Z         "doc",
2026-06-20T03:13:21.1899763Z         "unit"
2026-06-20T03:13:21.1899862Z       ],
2026-06-20T03:13:21.1899968Z       "stages": {
2026-06-20T03:13:21.1900069Z         "doc": {
2026-06-20T03:13:21.1900186Z           "complete": true,
2026-06-20T03:13:21.1900288Z           "evidence": [
2026-06-20T03:13:21.1900393Z             {
2026-06-20T03:13:21.1900521Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.1900626Z               "line": 141
2026-06-20T03:13:21.1900731Z             }
2026-06-20T03:13:21.1900836Z           ]
2026-06-20T03:13:21.1900932Z         },
2026-06-20T03:13:21.1901040Z         "impl": {
2026-06-20T03:13:21.1901160Z           "complete": false,
2026-06-20T03:13:21.1901266Z           "evidence": []
2026-06-20T03:13:21.1901369Z         },
2026-06-20T03:13:21.1901470Z         "int": {
2026-06-20T03:13:21.1901585Z           "complete": false,
2026-06-20T03:13:21.1901693Z           "evidence": []
2026-06-20T03:13:21.1901797Z         },
2026-06-20T03:13:21.1901907Z         "unit": {
2026-06-20T03:13:21.1902015Z           "complete": true,
2026-06-20T03:13:21.1902128Z           "evidence": [
2026-06-20T03:13:21.1902225Z             {
2026-06-20T03:13:21.1902386Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.1902492Z               "line": 1261
2026-06-20T03:13:21.1902592Z             }
2026-06-20T03:13:21.1902696Z           ]
2026-06-20T03:13:21.1902797Z         }
2026-06-20T03:13:21.1902902Z       }
2026-06-20T03:13:21.1902997Z     },
2026-06-20T03:13:21.1903097Z     {
2026-06-20T03:13:21.1903217Z       "id": "REQ-MANIFEST-7",
2026-06-20T03:13:21.1906262Z       "title": "Adapter-declared shortcut basename (M12-W2 follow-on): an optional `[adapter] shortcut_basename` manifest field names the basename the `spt endpoint run` picker bakes into the generated `<basename>-<id>` launcher shortcut (REQ-RUN-SHORTCUT). Absent ⇒ the harness-agnostic default `spt` (→ `spt-<id>`); an adapter sets it to brand its shortcuts (claude-spt → `cc` → `cc-<id>`), so the Claude-Code-ness lives in the PUBLISHED adapter manifest, never hardcoded in spt-core. The picker reads it from the RESOLVED manifest of the selected adapter (registry::resolve_option), falling back to `spt` when absent/empty/unresolvable. Additive + N-1-safe (serde-default Option, omitted from serialization when absent; old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). Documented in docs/MANIFEST.md `[adapter]` section + the claude-spt worked example — the adapter-author contract perri builds spt-claude-code against.",
2026-06-20T03:13:21.1906625Z       "requiredStages": [
2026-06-20T03:13:21.1906721Z         "doc",
2026-06-20T03:13:21.1906824Z         "impl",
2026-06-20T03:13:21.1906933Z         "unit"
2026-06-20T03:13:21.1907033Z       ],
2026-06-20T03:13:21.1907136Z       "stages": {
2026-06-20T03:13:21.1907240Z         "doc": {
2026-06-20T03:13:21.1907351Z           "complete": true,
2026-06-20T03:13:21.1907465Z           "evidence": [
2026-06-20T03:13:21.1907565Z             {
2026-06-20T03:13:21.1907690Z               "path": "docs/MANIFEST.md",
2026-06-20T03:13:21.1907799Z               "line": 35
2026-06-20T03:13:21.1907899Z             }
2026-06-20T03:13:21.1908000Z           ]
2026-06-20T03:13:21.1908090Z         },
2026-06-20T03:13:21.1908194Z         "impl": {
2026-06-20T03:13:21.1908300Z           "complete": true,
2026-06-20T03:13:21.1908438Z           "evidence": [
2026-06-20T03:13:21.1908533Z             {
2026-06-20T03:13:21.1908686Z               "path": "crates/spt/src/picker/data.rs",
2026-06-20T03:13:21.1908800Z               "line": 54
2026-06-20T03:13:21.1908897Z             }
2026-06-20T03:13:21.1909077Z           ]
2026-06-20T03:13:21.1909178Z         },
2026-06-20T03:13:21.1909287Z         "int": {
2026-06-20T03:13:21.1909401Z           "complete": false,
2026-06-20T03:13:21.1909507Z           "evidence": []
2026-06-20T03:13:21.1909612Z         },
2026-06-20T03:13:21.1909715Z         "unit": {
2026-06-20T03:13:21.1909820Z           "complete": true,
2026-06-20T03:13:21.1909924Z           "evidence": [
2026-06-20T03:13:21.1910027Z             {
2026-06-20T03:13:21.1910170Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.1910276Z               "line": 1638
2026-06-20T03:13:21.1910380Z             }
2026-06-20T03:13:21.1910480Z           ]
2026-06-20T03:13:21.1910586Z         }
2026-06-20T03:13:21.1910680Z       }
2026-06-20T03:13:21.1910776Z     },
2026-06-20T03:13:21.1910881Z     {
2026-06-20T03:13:21.1911004Z       "id": "REQ-MANIFEST-8",
2026-06-20T03:13:21.1913228Z       "title": "[adapter] host_binaries declares the harness executable basenames a kind=\"harness\" adapter hosts agents inside (e.g. host_binaries = [\"claude\"]); bind-time pid→exe-basename match (case-insensitive, .exe-stripped) over the seed's parent_pid selects the candidate adapter set; zero matches → a friendly error naming the binary + the --adapter escape hatch. Additive + N-1-safe: optional Vec<String>, #[serde(default, skip_serializing_if = \"Vec::is_empty\")] (omitted-serialized like shortcut_basename, old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). The match-key for ADR-0021 adapter-agnostic bind-time resolution. (v0.9.0)",
2026-06-20T03:13:21.1913352Z       "requiredStages": [
2026-06-20T03:13:21.1913453Z         "doc",
2026-06-20T03:13:21.1913576Z         "impl",
2026-06-20T03:13:21.1913677Z         "unit",
2026-06-20T03:13:21.1913772Z         "int"
2026-06-20T03:13:21.1913886Z       ],
2026-06-20T03:13:21.1913991Z       "stages": {
2026-06-20T03:13:21.1914096Z         "doc": {
2026-06-20T03:13:21.1914201Z           "complete": true,
2026-06-20T03:13:21.1914311Z           "evidence": [
2026-06-20T03:13:21.1914416Z             {
2026-06-20T03:13:21.1914540Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.1914655Z               "line": 184
2026-06-20T03:13:21.1914745Z             },
2026-06-20T03:13:21.1914850Z             {
2026-06-20T03:13:21.1914965Z               "path": "docs/MANIFEST.md",
2026-06-20T03:13:21.1915079Z               "line": 46
2026-06-20T03:13:21.1915177Z             }
2026-06-20T03:13:21.1915282Z           ]
2026-06-20T03:13:21.1915383Z         },
2026-06-20T03:13:21.1915487Z         "impl": {
2026-06-20T03:13:21.1915597Z           "complete": true,
2026-06-20T03:13:21.1915707Z           "evidence": [
2026-06-20T03:13:21.1915936Z             {
2026-06-20T03:13:21.1916089Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-20T03:13:21.1916299Z               "line": 222
2026-06-20T03:13:21.1916393Z             },
2026-06-20T03:13:21.1916498Z             {
2026-06-20T03:13:21.1916647Z               "path": "crates/spt-store/src/proc.rs",
2026-06-20T03:13:21.1916751Z               "line": 306
2026-06-20T03:13:21.1916851Z             }
2026-06-20T03:13:21.1916943Z           ]
2026-06-20T03:13:21.1917046Z         },
2026-06-20T03:13:21.1917147Z         "int": {
2026-06-20T03:13:21.1917253Z           "complete": true,
2026-06-20T03:13:21.1917360Z           "evidence": [
2026-06-20T03:13:21.1917460Z             {
2026-06-20T03:13:21.1917617Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-20T03:13:21.1917730Z               "line": 18
2026-06-20T03:13:21.1917835Z             }
2026-06-20T03:13:21.1917940Z           ]
2026-06-20T03:13:21.1918040Z         },
2026-06-20T03:13:21.1918145Z         "unit": {
2026-06-20T03:13:21.1918255Z           "complete": true,
2026-06-20T03:13:21.1918363Z           "evidence": [
2026-06-20T03:13:21.1918469Z             {
2026-06-20T03:13:21.1918617Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.1918726Z               "line": 1656
2026-06-20T03:13:21.1918827Z             },
2026-06-20T03:13:21.1918927Z             {
2026-06-20T03:13:21.1919166Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-20T03:13:21.1919265Z               "line": 316
2026-06-20T03:13:21.1919370Z             },
2026-06-20T03:13:21.1919471Z             {
2026-06-20T03:13:21.1919618Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-20T03:13:21.1919718Z               "line": 332
2026-06-20T03:13:21.1919820Z             },
2026-06-20T03:13:21.1919918Z             {
2026-06-20T03:13:21.1920063Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-20T03:13:21.1920163Z               "line": 345
2026-06-20T03:13:21.1920270Z             },
2026-06-20T03:13:21.1920380Z             {
2026-06-20T03:13:21.1920508Z               "path": "crates/spt-store/src/proc.rs",
2026-06-20T03:13:21.1920616Z               "line": 422
2026-06-20T03:13:21.1920716Z             },
2026-06-20T03:13:21.1920817Z             {
2026-06-20T03:13:21.1920950Z               "path": "crates/spt-store/src/proc.rs",
2026-06-20T03:13:21.1921060Z               "line": 436
2026-06-20T03:13:21.1921160Z             }
2026-06-20T03:13:21.1921259Z           ]
2026-06-20T03:13:21.1921360Z         }
2026-06-20T03:13:21.1921460Z       }
2026-06-20T03:13:21.1921564Z     },
2026-06-20T03:13:21.1921665Z     {
2026-06-20T03:13:21.1921775Z       "id": "REQ-MESH-1",
2026-06-20T03:13:21.1923874Z       "title": "Membership proof (seed-proof): symmetric current-epoch seed-knowledge replaces is_trusted at EVERY inbound gate (registry apply, WAN receive, sync, notif, connection accept). MK = HKDF(seed, domain ‖ subnet_id ‖ seed_epoch); mutual channel-bound challenge-response at connect (transcript binds both handshake-proven node pubkeys, both nonces, subnet_id, seed_epoch, role); verified once per connection, cached on the broker ConnEntry, kept warm via QUIC keep-alive so re-proof is restart/partition/rotation-only. Exact-epoch match (re-seed is the sole N-1 exception). SECURITY INVARIANTS: channel-bound (no cross-connection replay), mutual, accepts a member it never paired (the mesh property).",
2026-06-20T03:13:21.1924022Z       "requiredStages": [
2026-06-20T03:13:21.1924122Z         "impl",
2026-06-20T03:13:21.1924218Z         "unit",
2026-06-20T03:13:21.1924318Z         "int"
2026-06-20T03:13:21.1924428Z       ],
2026-06-20T03:13:21.1924532Z       "stages": {
2026-06-20T03:13:21.1924633Z         "doc": {
2026-06-20T03:13:21.1924742Z           "complete": false,
2026-06-20T03:13:21.1924862Z           "evidence": []
2026-06-20T03:13:21.1924967Z         },
2026-06-20T03:13:21.1925071Z         "impl": {
2026-06-20T03:13:21.1925177Z           "complete": true,
2026-06-20T03:13:21.1925390Z           "evidence": [
2026-06-20T03:13:21.1925487Z             {
2026-06-20T03:13:21.1925629Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T03:13:21.1925852Z               "line": 922
2026-06-20T03:13:21.1925963Z             },
2026-06-20T03:13:21.1926062Z             {
2026-06-20T03:13:21.1926215Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T03:13:21.1926320Z               "line": 38
2026-06-20T03:13:21.1926424Z             },
2026-06-20T03:13:21.1926525Z             {
2026-06-20T03:13:21.1926677Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T03:13:21.1926786Z               "line": 161
2026-06-20T03:13:21.1926887Z             },
2026-06-20T03:13:21.1926992Z             {
2026-06-20T03:13:21.1927141Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T03:13:21.1927249Z               "line": 206
2026-06-20T03:13:21.1927349Z             },
2026-06-20T03:13:21.1927456Z             {
2026-06-20T03:13:21.1927611Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T03:13:21.1927717Z               "line": 57
2026-06-20T03:13:21.1927832Z             },
2026-06-20T03:13:21.1927930Z             {
2026-06-20T03:13:21.1928102Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-20T03:13:21.1928206Z               "line": 24
2026-06-20T03:13:21.1928304Z             },
2026-06-20T03:13:21.1928410Z             {
2026-06-20T03:13:21.1928567Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-20T03:13:21.1928681Z               "line": 142
2026-06-20T03:13:21.1928782Z             },
2026-06-20T03:13:21.1928872Z             {
2026-06-20T03:13:21.1929087Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-20T03:13:21.1929192Z               "line": 162
2026-06-20T03:13:21.1929300Z             }
2026-06-20T03:13:21.1929397Z           ]
2026-06-20T03:13:21.1929501Z         },
2026-06-20T03:13:21.1929596Z         "int": {
2026-06-20T03:13:21.1929721Z           "complete": true,
2026-06-20T03:13:21.1929835Z           "evidence": [
2026-06-20T03:13:21.1929940Z             {
2026-06-20T03:13:21.1930098Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-20T03:13:21.1930193Z               "line": 67
2026-06-20T03:13:21.1930293Z             },
2026-06-20T03:13:21.1930389Z             {
2026-06-20T03:13:21.1930541Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-20T03:13:21.1930656Z               "line": 93
2026-06-20T03:13:21.1930756Z             },
2026-06-20T03:13:21.1930850Z             {
2026-06-20T03:13:21.1931002Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-20T03:13:21.1931110Z               "line": 117
2026-06-20T03:13:21.1931209Z             },
2026-06-20T03:13:21.1931305Z             {
2026-06-20T03:13:21.1931458Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-20T03:13:21.1931562Z               "line": 134
2026-06-20T03:13:21.1931664Z             }
2026-06-20T03:13:21.1931754Z           ]
2026-06-20T03:13:21.1931858Z         },
2026-06-20T03:13:21.1931945Z         "unit": {
2026-06-20T03:13:21.1932059Z           "complete": true,
2026-06-20T03:13:21.1932172Z           "evidence": [
2026-06-20T03:13:21.1932259Z             {
2026-06-20T03:13:21.1932417Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T03:13:21.1932525Z               "line": 427
2026-06-20T03:13:21.1932627Z             },
2026-06-20T03:13:21.1932730Z             {
2026-06-20T03:13:21.1932884Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-20T03:13:21.1932998Z               "line": 376
2026-06-20T03:13:21.1933098Z             },
2026-06-20T03:13:21.1933199Z             {
2026-06-20T03:13:21.1933350Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-20T03:13:21.1933463Z               "line": 412
2026-06-20T03:13:21.1933569Z             },
2026-06-20T03:13:21.1933667Z             {
2026-06-20T03:13:21.1933824Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-20T03:13:21.1934043Z               "line": 427
2026-06-20T03:13:21.1934225Z             },
2026-06-20T03:13:21.1934316Z             {
2026-06-20T03:13:21.1934478Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-20T03:13:21.1934582Z               "line": 438
2026-06-20T03:13:21.1934682Z             },
2026-06-20T03:13:21.1934773Z             {
2026-06-20T03:13:21.1934925Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-20T03:13:21.1935035Z               "line": 449
2026-06-20T03:13:21.1935141Z             },
2026-06-20T03:13:21.1935250Z             {
2026-06-20T03:13:21.1935397Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-20T03:13:21.1935504Z               "line": 460
2026-06-20T03:13:21.1935607Z             },
2026-06-20T03:13:21.1935708Z             {
2026-06-20T03:13:21.1935870Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-20T03:13:21.1935984Z               "line": 496
2026-06-20T03:13:21.1936080Z             },
2026-06-20T03:13:21.1936185Z             {
2026-06-20T03:13:21.1936340Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-20T03:13:21.1936446Z               "line": 519
2026-06-20T03:13:21.1936546Z             },
2026-06-20T03:13:21.1936650Z             {
2026-06-20T03:13:21.1936804Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-20T03:13:21.1936913Z               "line": 546
2026-06-20T03:13:21.1937013Z             }
2026-06-20T03:13:21.1937109Z           ]
2026-06-20T03:13:21.1937214Z         }
2026-06-20T03:13:21.1937313Z       }
2026-06-20T03:13:21.1937414Z     },
2026-06-20T03:13:21.1937514Z     {
2026-06-20T03:13:21.1937614Z       "id": "REQ-MESH-2",
2026-06-20T03:13:21.1940258Z       "title": "Member roster: node-level union-merge grow-set (per member: pubkey, label, machine_id, last-known address, last-seen — NOT the seed), the discovery directory the mesh dials by. Seeded IN FULL at pairing (seed-holder hands joiner the whole current roster, incl. offline members — folds in deferred pairing-time hostname capture + post-join address seeding); each node authors its own entry stamped with its lease_epoch, merged strictly-greater-wins (the node_label lease); exchanged only over seed-proof'd member connections; forgery-inert (a fake entry names a pubkey that still can't seed-proof). Removal needs a TOMBSTONE — a per-pubkey revoked marker that propagates, dominates the entry, gates admission (seed-proof ∧ ¬tombstoned), and prevents reinsert; cleared by a completed re-pair of that pubkey. Persists through silence (offline member keeps its entry).",
2026-06-20T03:13:21.1940410Z       "requiredStages": [
2026-06-20T03:13:21.1940514Z         "impl",
2026-06-20T03:13:21.1940620Z         "unit",
2026-06-20T03:13:21.1940710Z         "int"
2026-06-20T03:13:21.1940810Z       ],
2026-06-20T03:13:21.1940916Z       "stages": {
2026-06-20T03:13:21.1941020Z         "doc": {
2026-06-20T03:13:21.1941159Z           "complete": false,
2026-06-20T03:13:21.1941264Z           "evidence": []
2026-06-20T03:13:21.1941386Z         },
2026-06-20T03:13:21.1941491Z         "impl": {
2026-06-20T03:13:21.1941610Z           "complete": true,
2026-06-20T03:13:21.1941713Z           "evidence": [
2026-06-20T03:13:21.1941822Z             {
2026-06-20T03:13:21.1941976Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T03:13:21.1942074Z               "line": 757
2026-06-20T03:13:21.1942181Z             },
2026-06-20T03:13:21.1942280Z             {
2026-06-20T03:13:21.1942437Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T03:13:21.1942543Z               "line": 118
2026-06-20T03:13:21.1942643Z             },
2026-06-20T03:13:21.1942747Z             {
2026-06-20T03:13:21.1942891Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T03:13:21.1943000Z               "line": 347
2026-06-20T03:13:21.1943100Z             },
2026-06-20T03:13:21.1943201Z             {
2026-06-20T03:13:21.1943459Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T03:13:21.1943563Z               "line": 389
2026-06-20T03:13:21.1943760Z             },
2026-06-20T03:13:21.1943864Z             {
2026-06-20T03:13:21.1944015Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T03:13:21.1944119Z               "line": 403
2026-06-20T03:13:21.1944223Z             },
2026-06-20T03:13:21.1944327Z             {
2026-06-20T03:13:21.1944461Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T03:13:21.1944571Z               "line": 492
2026-06-20T03:13:21.1944670Z             },
2026-06-20T03:13:21.1944772Z             {
2026-06-20T03:13:21.1944918Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T03:13:21.1945023Z               "line": 507
2026-06-20T03:13:21.1945129Z             },
2026-06-20T03:13:21.1945228Z             {
2026-06-20T03:13:21.1945367Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T03:13:21.1945481Z               "line": 534
2026-06-20T03:13:21.1945576Z             },
2026-06-20T03:13:21.1945662Z             {
2026-06-20T03:13:21.1945829Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T03:13:21.1945939Z               "line": 207
2026-06-20T03:13:21.1946040Z             },
2026-06-20T03:13:21.1946148Z             {
2026-06-20T03:13:21.1946297Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T03:13:21.1946421Z               "line": 755
2026-06-20T03:13:21.1946521Z             },
2026-06-20T03:13:21.1946627Z             {
2026-06-20T03:13:21.1946778Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T03:13:21.1946882Z               "line": 816
2026-06-20T03:13:21.1946982Z             },
2026-06-20T03:13:21.1947074Z             {
2026-06-20T03:13:21.1947216Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T03:13:21.1947316Z               "line": 869
2026-06-20T03:13:21.1947422Z             },
2026-06-20T03:13:21.1947525Z             {
2026-06-20T03:13:21.1947674Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T03:13:21.1947783Z               "line": 891
2026-06-20T03:13:21.1947883Z             },
2026-06-20T03:13:21.1947984Z             {
2026-06-20T03:13:21.1948121Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1948227Z               "line": 122
2026-06-20T03:13:21.1948337Z             },
2026-06-20T03:13:21.1948436Z             {
2026-06-20T03:13:21.1948585Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T03:13:21.1948684Z               "line": 44
2026-06-20T03:13:21.1948794Z             },
2026-06-20T03:13:21.1948890Z             {
2026-06-20T03:13:21.1949108Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T03:13:21.1949217Z               "line": 184
2026-06-20T03:13:21.1949326Z             },
2026-06-20T03:13:21.1949430Z             {
2026-06-20T03:13:21.1949568Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T03:13:21.1949687Z               "line": 211
2026-06-20T03:13:21.1949786Z             },
2026-06-20T03:13:21.1949888Z             {
2026-06-20T03:13:21.1950035Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T03:13:21.1950145Z               "line": 251
2026-06-20T03:13:21.1950255Z             },
2026-06-20T03:13:21.1950349Z             {
2026-06-20T03:13:21.1950494Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T03:13:21.1950603Z               "line": 275
2026-06-20T03:13:21.1950702Z             },
2026-06-20T03:13:21.1950808Z             {
2026-06-20T03:13:21.1950951Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T03:13:21.1951065Z               "line": 289
2026-06-20T03:13:21.1951162Z             },
2026-06-20T03:13:21.1951265Z             {
2026-06-20T03:13:21.1951409Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T03:13:21.1951514Z               "line": 300
2026-06-20T03:13:21.1951618Z             },
2026-06-20T03:13:21.1951824Z             {
2026-06-20T03:13:21.1951975Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T03:13:21.1952174Z               "line": 313
2026-06-20T03:13:21.1952288Z             }
2026-06-20T03:13:21.1952387Z           ]
2026-06-20T03:13:21.1952488Z         },
2026-06-20T03:13:21.1952588Z         "int": {
2026-06-20T03:13:21.1952692Z           "complete": true,
2026-06-20T03:13:21.1952798Z           "evidence": [
2026-06-20T03:13:21.1952902Z             {
2026-06-20T03:13:21.1953056Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-20T03:13:21.1953160Z               "line": 116
2026-06-20T03:13:21.1953265Z             },
2026-06-20T03:13:21.1953370Z             {
2026-06-20T03:13:21.1953517Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-20T03:13:21.1953627Z               "line": 181
2026-06-20T03:13:21.1953733Z             }
2026-06-20T03:13:21.1953828Z           ]
2026-06-20T03:13:21.1953918Z         },
2026-06-20T03:13:21.1954029Z         "unit": {
2026-06-20T03:13:21.1954151Z           "complete": true,
2026-06-20T03:13:21.1954251Z           "evidence": [
2026-06-20T03:13:21.1954367Z             {
2026-06-20T03:13:21.1954509Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T03:13:21.1954617Z               "line": 999
2026-06-20T03:13:21.1954718Z             },
2026-06-20T03:13:21.1954816Z             {
2026-06-20T03:13:21.1954964Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T03:13:21.1955074Z               "line": 1016
2026-06-20T03:13:21.1955178Z             },
2026-06-20T03:13:21.1955278Z             {
2026-06-20T03:13:21.1955427Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T03:13:21.1955545Z               "line": 1024
2026-06-20T03:13:21.1955646Z             },
2026-06-20T03:13:21.1955760Z             {
2026-06-20T03:13:21.1955908Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T03:13:21.1956018Z               "line": 1048
2026-06-20T03:13:21.1956127Z             },
2026-06-20T03:13:21.1956232Z             {
2026-06-20T03:13:21.1956394Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T03:13:21.1956513Z               "line": 1499
2026-06-20T03:13:21.1956619Z             },
2026-06-20T03:13:21.1956713Z             {
2026-06-20T03:13:21.1956852Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T03:13:21.1956967Z               "line": 347
2026-06-20T03:13:21.1957071Z             },
2026-06-20T03:13:21.1957167Z             {
2026-06-20T03:13:21.1957301Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T03:13:21.1957418Z               "line": 370
2026-06-20T03:13:21.1957518Z             },
2026-06-20T03:13:21.1957624Z             {
2026-06-20T03:13:21.1957771Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T03:13:21.1957886Z               "line": 407
2026-06-20T03:13:21.1957982Z             },
2026-06-20T03:13:21.1958081Z             {
2026-06-20T03:13:21.1958220Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T03:13:21.1958321Z               "line": 431
2026-06-20T03:13:21.1958414Z             },
2026-06-20T03:13:21.1958521Z             {
2026-06-20T03:13:21.1958659Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T03:13:21.1958768Z               "line": 483
2026-06-20T03:13:21.1958869Z             },
2026-06-20T03:13:21.1959034Z             {
2026-06-20T03:13:21.1959169Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T03:13:21.1959287Z               "line": 499
2026-06-20T03:13:21.1959393Z             },
2026-06-20T03:13:21.1959494Z             {
2026-06-20T03:13:21.1959625Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T03:13:21.1959729Z               "line": 514
2026-06-20T03:13:21.1959830Z             },
2026-06-20T03:13:21.1959923Z             {
2026-06-20T03:13:21.1960061Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T03:13:21.1960172Z               "line": 531
2026-06-20T03:13:21.1960395Z             }
2026-06-20T03:13:21.1960496Z           ]
2026-06-20T03:13:21.1960600Z         }
2026-06-20T03:13:21.1960778Z       }
2026-06-20T03:13:21.1960877Z     },
2026-06-20T03:13:21.1960977Z     {
2026-06-20T03:13:21.1961102Z       "id": "REQ-MESH-3",
2026-06-20T03:13:21.1962772Z       "title": "Mesh row fan-out: registry rows stay OWN-AUTHORED; the only change is the push target widens from directly-paired peers to ALL roster members (a wider DIRECT fan-out, never a third-party relay). Every row/message still arrives from its author over a handshake → KNOWN-HAZARDS 7.5 (origin = handshake node) and 4.10 (eviction lease: any future update comes from that node itself, alive) PRESERVED VERBATIM. Closes the staggered A→B→C repro: C (roster-seeded with A at pairing) initiates to A, seed-proof admits C unpaired, A learns C, both push directly.",
2026-06-20T03:13:21.1962895Z       "requiredStages": [
2026-06-20T03:13:21.1963010Z         "impl",
2026-06-20T03:13:21.1963110Z         "unit",
2026-06-20T03:13:21.1963219Z         "int"
2026-06-20T03:13:21.1963316Z       ],
2026-06-20T03:13:21.1963425Z       "stages": {
2026-06-20T03:13:21.1963534Z         "doc": {
2026-06-20T03:13:21.1963654Z           "complete": false,
2026-06-20T03:13:21.1963759Z           "evidence": []
2026-06-20T03:13:21.1963863Z         },
2026-06-20T03:13:21.1963969Z         "impl": {
2026-06-20T03:13:21.1964083Z           "complete": true,
2026-06-20T03:13:21.1964187Z           "evidence": [
2026-06-20T03:13:21.1964279Z             {
2026-06-20T03:13:21.1964430Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T03:13:21.1964541Z               "line": 641
2026-06-20T03:13:21.1964646Z             }
2026-06-20T03:13:21.1964754Z           ]
2026-06-20T03:13:21.1964851Z         },
2026-06-20T03:13:21.1964956Z         "int": {
2026-06-20T03:13:21.1965064Z           "complete": true,
2026-06-20T03:13:21.1965178Z           "evidence": [
2026-06-20T03:13:21.1965283Z             {
2026-06-20T03:13:21.1965438Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-20T03:13:21.1965553Z               "line": 373
2026-06-20T03:13:21.1965663Z             },
2026-06-20T03:13:21.1965767Z             {
2026-06-20T03:13:21.1965911Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-20T03:13:21.1966025Z               "line": 436
2026-06-20T03:13:21.1966124Z             }
2026-06-20T03:13:21.1966225Z           ]
2026-06-20T03:13:21.1966320Z         },
2026-06-20T03:13:21.1966415Z         "unit": {
2026-06-20T03:13:21.1966531Z           "complete": true,
2026-06-20T03:13:21.1966640Z           "evidence": [
2026-06-20T03:13:21.1966744Z             {
2026-06-20T03:13:21.1966893Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T03:13:21.1966998Z               "line": 910
2026-06-20T03:13:21.1967103Z             }
2026-06-20T03:13:21.1967198Z           ]
2026-06-20T03:13:21.1967302Z         }
2026-06-20T03:13:21.1967398Z       }
2026-06-20T03:13:21.1967504Z     },
2026-06-20T03:13:21.1967612Z     {
2026-06-20T03:13:21.1967718Z       "id": "REQ-MESH-4",
2026-06-20T03:13:21.1969991Z       "title": "Revoke + timeboxed seed rotation + re-seed grace: `spt subnet revoke <node>...` (list, elevation-gated, revoke-only) writes roster tombstones immediately, then schedules ONE seed rotation (re-mint seed, bump seed_epoch, push new seed CONFIDENTIALLY over member-auth'd TLS connections — never in roster/registry gossip — force-drop revokees) at the close of a coalescing window (default 1h); further revokes in the window join the same rotation (one epoch bump). `--force-rotate-seed` rotates immediately (compromised-node path). RE-SEED GRACE: a node proving the immediately-prior epoch (N-1) AND still on the roster gets a re-seed-only restricted connection (auto-heals a benign offliner); revoked/off-roster denied; ≥2 stale → re-pair.",
2026-06-20T03:13:21.1970120Z       "requiredStages": [
2026-06-20T03:13:21.1970223Z         "impl",
2026-06-20T03:13:21.1970328Z         "unit",
2026-06-20T03:13:21.1970555Z         "int"
2026-06-20T03:13:21.1970651Z       ],
2026-06-20T03:13:21.1970746Z       "stages": {
2026-06-20T03:13:21.1970950Z         "doc": {
2026-06-20T03:13:21.1971075Z           "complete": false,
2026-06-20T03:13:21.1971188Z           "evidence": []
2026-06-20T03:13:21.1971295Z         },
2026-06-20T03:13:21.1971394Z         "impl": {
2026-06-20T03:13:21.1971513Z           "complete": true,
2026-06-20T03:13:21.1971619Z           "evidence": [
2026-06-20T03:13:21.1971728Z             {
2026-06-20T03:13:21.1971890Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-20T03:13:21.1972001Z               "line": 33
2026-06-20T03:13:21.1972096Z             },
2026-06-20T03:13:21.1972185Z             {
2026-06-20T03:13:21.1972334Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T03:13:21.1972439Z               "line": 68
2026-06-20T03:13:21.1972544Z             },
2026-06-20T03:13:21.1972654Z             {
2026-06-20T03:13:21.1972801Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T03:13:21.1972921Z               "line": 111
2026-06-20T03:13:21.1973025Z             },
2026-06-20T03:13:21.1973138Z             {
2026-06-20T03:13:21.1973286Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T03:13:21.1973393Z               "line": 462
2026-06-20T03:13:21.1973498Z             },
2026-06-20T03:13:21.1973594Z             {
2026-06-20T03:13:21.1973741Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T03:13:21.1973852Z               "line": 711
2026-06-20T03:13:21.1973961Z             },
2026-06-20T03:13:21.1974056Z             {
2026-06-20T03:13:21.1974205Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T03:13:21.1974315Z               "line": 725
2026-06-20T03:13:21.1974413Z             },
2026-06-20T03:13:21.1974515Z             {
2026-06-20T03:13:21.1974653Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.1974762Z               "line": 132
2026-06-20T03:13:21.1974868Z             },
2026-06-20T03:13:21.1974971Z             {
2026-06-20T03:13:21.1975116Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-20T03:13:21.1975225Z               "line": 26
2026-06-20T03:13:21.1975325Z             },
2026-06-20T03:13:21.1975426Z             {
2026-06-20T03:13:21.1975582Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-20T03:13:21.1975690Z               "line": 97
2026-06-20T03:13:21.1975791Z             },
2026-06-20T03:13:21.1975890Z             {
2026-06-20T03:13:21.1976022Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-20T03:13:21.1976127Z               "line": 119
2026-06-20T03:13:21.1976232Z             },
2026-06-20T03:13:21.1976332Z             {
2026-06-20T03:13:21.1976480Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T03:13:21.1976589Z               "line": 82
2026-06-20T03:13:21.1976694Z             },
2026-06-20T03:13:21.1976795Z             {
2026-06-20T03:13:21.1976928Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T03:13:21.1977038Z               "line": 111
2026-06-20T03:13:21.1977143Z             },
2026-06-20T03:13:21.1977247Z             {
2026-06-20T03:13:21.1977387Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T03:13:21.1977491Z               "line": 232
2026-06-20T03:13:21.1977591Z             },
2026-06-20T03:13:21.1977692Z             {
2026-06-20T03:13:21.1977824Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T03:13:21.1977939Z               "line": 245
2026-06-20T03:13:21.1978050Z             },
2026-06-20T03:13:21.1978134Z             {
2026-06-20T03:13:21.1978268Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1978375Z               "line": 4665
2026-06-20T03:13:21.1978472Z             }
2026-06-20T03:13:21.1978576Z           ]
2026-06-20T03:13:21.1978678Z         },
2026-06-20T03:13:21.1978783Z         "int": {
2026-06-20T03:13:21.1978891Z           "complete": true,
2026-06-20T03:13:21.1979178Z           "evidence": [
2026-06-20T03:13:21.1979278Z             {
2026-06-20T03:13:21.1979431Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-20T03:13:21.1979632Z               "line": 98
2026-06-20T03:13:21.1979736Z             },
2026-06-20T03:13:21.1979840Z             {
2026-06-20T03:13:21.1979980Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-20T03:13:21.1980098Z               "line": 140
2026-06-20T03:13:21.1980198Z             }
2026-06-20T03:13:21.1980299Z           ]
2026-06-20T03:13:21.1980389Z         },
2026-06-20T03:13:21.1980494Z         "unit": {
2026-06-20T03:13:21.1980605Z           "complete": true,
2026-06-20T03:13:21.1980708Z           "evidence": [
2026-06-20T03:13:21.1980817Z             {
2026-06-20T03:13:21.1980965Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-20T03:13:21.1981073Z               "line": 178
2026-06-20T03:13:21.1981177Z             },
2026-06-20T03:13:21.1981283Z             {
2026-06-20T03:13:21.1981443Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-20T03:13:21.1981550Z               "line": 242
2026-06-20T03:13:21.1984431Z             },
2026-06-20T03:13:21.1984569Z             {
2026-06-20T03:13:21.1984746Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T03:13:21.1984860Z               "line": 1079
2026-06-20T03:13:21.1984964Z             },
2026-06-20T03:13:21.1985070Z             {
2026-06-20T03:13:21.1985232Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T03:13:21.1985336Z               "line": 1109
2026-06-20T03:13:21.1985437Z             },
2026-06-20T03:13:21.1985536Z             {
2026-06-20T03:13:21.1985676Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T03:13:21.1985786Z               "line": 1129
2026-06-20T03:13:21.1985895Z             },
2026-06-20T03:13:21.1985996Z             {
2026-06-20T03:13:21.1986161Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-20T03:13:21.1986279Z               "line": 602
2026-06-20T03:13:21.1986389Z             },
2026-06-20T03:13:21.1986487Z             {
2026-06-20T03:13:21.1986640Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-20T03:13:21.1986740Z               "line": 148
2026-06-20T03:13:21.1986840Z             },
2026-06-20T03:13:21.1986945Z             {
2026-06-20T03:13:21.1987083Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-20T03:13:21.1987192Z               "line": 169
2026-06-20T03:13:21.1987298Z             },
2026-06-20T03:13:21.1987398Z             {
2026-06-20T03:13:21.1987536Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-20T03:13:21.1987632Z               "line": 181
2026-06-20T03:13:21.1987736Z             },
2026-06-20T03:13:21.1987836Z             {
2026-06-20T03:13:21.1987986Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-20T03:13:21.1988090Z               "line": 202
2026-06-20T03:13:21.1988194Z             },
2026-06-20T03:13:21.1988305Z             {
2026-06-20T03:13:21.1988442Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T03:13:21.1988543Z               "line": 375
2026-06-20T03:13:21.1988644Z             },
2026-06-20T03:13:21.1988747Z             {
2026-06-20T03:13:21.1988887Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T03:13:21.1989066Z               "line": 407
2026-06-20T03:13:21.1989160Z             },
2026-06-20T03:13:21.1989262Z             {
2026-06-20T03:13:21.1989395Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.1989514Z               "line": 10052
2026-06-20T03:13:21.1989615Z             }
2026-06-20T03:13:21.1989718Z           ]
2026-06-20T03:13:21.1989814Z         }
2026-06-20T03:13:21.1989920Z       }
2026-06-20T03:13:21.1990019Z     },
2026-06-20T03:13:21.1990110Z     {
2026-06-20T03:13:21.1990211Z       "id": "REQ-MESH-5",
2026-06-20T03:13:21.1991680Z       "title": "Hard cutover from pairwise trust: delete peers.json + the is_trusted authorization path (no migration — expendable test fleet, re-pairs fresh under the new model, user decision 2026-06-08). Warn-on-change DEMOTED from a gate to an awareness notice anchored on machine_id (not label): 'machine M, last seen as K1, now presents K2' — fires the same event as the REQ-SUBNET-7 re-pair overwrite. The TrustStore/peers.json code and its call sites are removed, not left dead.",
2026-06-20T03:13:21.1992114Z       "requiredStages": [
2026-06-20T03:13:21.1992224Z         "impl",
2026-06-20T03:13:21.1992328Z         "unit"
2026-06-20T03:13:21.1992430Z       ],
2026-06-20T03:13:21.1992534Z       "stages": {
2026-06-20T03:13:21.1992643Z         "doc": {
2026-06-20T03:13:21.1992754Z           "complete": false,
2026-06-20T03:13:21.1992868Z           "evidence": []
2026-06-20T03:13:21.1992967Z         },
2026-06-20T03:13:21.1993078Z         "impl": {
2026-06-20T03:13:21.1993192Z           "complete": true,
2026-06-20T03:13:21.1993292Z           "evidence": [
2026-06-20T03:13:21.1993393Z             {
2026-06-20T03:13:21.1993564Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-20T03:13:21.1993674Z               "line": 61
2026-06-20T03:13:21.1993783Z             },
2026-06-20T03:13:21.1993888Z             {
2026-06-20T03:13:21.1994037Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-20T03:13:21.1994150Z               "line": 109
2026-06-20T03:13:21.1994253Z             },
2026-06-20T03:13:21.1994354Z             {
2026-06-20T03:13:21.1994505Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T03:13:21.1994614Z               "line": 104
2026-06-20T03:13:21.1994710Z             },
2026-06-20T03:13:21.1994814Z             {
2026-06-20T03:13:21.1994967Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T03:13:21.1995072Z               "line": 105
2026-06-20T03:13:21.1995172Z             },
2026-06-20T03:13:21.1995277Z             {
2026-06-20T03:13:21.1995430Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.1995553Z               "line": 85
2026-06-20T03:13:21.1995649Z             },
2026-06-20T03:13:21.1995754Z             {
2026-06-20T03:13:21.1995902Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.1996017Z               "line": 250
2026-06-20T03:13:21.1996126Z             },
2026-06-20T03:13:21.1996231Z             {
2026-06-20T03:13:21.1996392Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.1996497Z               "line": 314
2026-06-20T03:13:21.1996590Z             },
2026-06-20T03:13:21.1996698Z             {
2026-06-20T03:13:21.1996854Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.1996968Z               "line": 767
2026-06-20T03:13:21.1997067Z             },
2026-06-20T03:13:21.1997176Z             {
2026-06-20T03:13:21.1997315Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T03:13:21.1997428Z               "line": 101
2026-06-20T03:13:21.1997534Z             },
2026-06-20T03:13:21.1997639Z             {
2026-06-20T03:13:21.1997781Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T03:13:21.1997887Z               "line": 193
2026-06-20T03:13:21.1997977Z             }
2026-06-20T03:13:21.1998077Z           ]
2026-06-20T03:13:21.1998174Z         },
2026-06-20T03:13:21.1998273Z         "int": {
2026-06-20T03:13:21.1998392Z           "complete": false,
2026-06-20T03:13:21.1998503Z           "evidence": []
2026-06-20T03:13:21.1998598Z         },
2026-06-20T03:13:21.1998702Z         "unit": {
2026-06-20T03:13:21.1998813Z           "complete": true,
2026-06-20T03:13:21.1998921Z           "evidence": [
2026-06-20T03:13:21.1999108Z             {
2026-06-20T03:13:21.1999260Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.1999379Z               "line": 1009
2026-06-20T03:13:21.1999471Z             },
2026-06-20T03:13:21.1999565Z             {
2026-06-20T03:13:21.1999707Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T03:13:21.1999946Z               "line": 462
2026-06-20T03:13:21.2000041Z             }
2026-06-20T03:13:21.2000132Z           ]
2026-06-20T03:13:21.2000322Z         }
2026-06-20T03:13:21.2000423Z       }
2026-06-20T03:13:21.2000527Z     },
2026-06-20T03:13:21.2000627Z     {
2026-06-20T03:13:21.2000733Z       "id": "REQ-MESH-6",
2026-06-20T03:13:21.2001985Z       "title": "Concurrent liveness probes: `spt subnet status --nodes` fans out its offline/serve-probes (REQ-SUBNET-5) CONCURRENTLY — total wall-time bounded by the single-probe ceiling (~3s), never k×ceiling. The mesh makes a node see ALL members (many possibly offline), so a serial probe loop would be offline_count×3s. (Planning verifies the current REQ-SUBNET-5 probe loop's behavior and fixes it if serial.)",
2026-06-20T03:13:21.2002109Z       "requiredStages": [
2026-06-20T03:13:21.2002221Z         "impl",
2026-06-20T03:13:21.2002317Z         "unit"
2026-06-20T03:13:21.2002413Z       ],
2026-06-20T03:13:21.2002512Z       "stages": {
2026-06-20T03:13:21.2002631Z         "doc": {
2026-06-20T03:13:21.2002751Z           "complete": false,
2026-06-20T03:13:21.2002860Z           "evidence": []
2026-06-20T03:13:21.2002980Z         },
2026-06-20T03:13:21.2003080Z         "impl": {
2026-06-20T03:13:21.2003189Z           "complete": true,
2026-06-20T03:13:21.2003300Z           "evidence": [
2026-06-20T03:13:21.2003404Z             {
2026-06-20T03:13:21.2003542Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2003648Z               "line": 4181
2026-06-20T03:13:21.2003752Z             }
2026-06-20T03:13:21.2003857Z           ]
2026-06-20T03:13:21.2003958Z         },
2026-06-20T03:13:21.2004062Z         "int": {
2026-06-20T03:13:21.2004176Z           "complete": false,
2026-06-20T03:13:21.2004292Z           "evidence": []
2026-06-20T03:13:21.2004390Z         },
2026-06-20T03:13:21.2004496Z         "unit": {
2026-06-20T03:13:21.2004607Z           "complete": true,
2026-06-20T03:13:21.2004710Z           "evidence": [
2026-06-20T03:13:21.2004814Z             {
2026-06-20T03:13:21.2004943Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2005055Z               "line": 10602
2026-06-20T03:13:21.2005154Z             },
2026-06-20T03:13:21.2005261Z             {
2026-06-20T03:13:21.2005389Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2005489Z               "line": 10629
2026-06-20T03:13:21.2005594Z             },
2026-06-20T03:13:21.2005694Z             {
2026-06-20T03:13:21.2005828Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2005937Z               "line": 10653
2026-06-20T03:13:21.2006046Z             }
2026-06-20T03:13:21.2006147Z           ]
2026-06-20T03:13:21.2006248Z         }
2026-06-20T03:13:21.2006352Z       }
2026-06-20T03:13:21.2006452Z     },
2026-06-20T03:13:21.2006553Z     {
2026-06-20T03:13:21.2006671Z       "id": "REQ-MIGRATE-1",
2026-06-20T03:13:21.2006873Z       "title": "Auto-detect and migrate a legacy claude_skill_owl install",
2026-06-20T03:13:21.2006995Z       "requiredStages": [],
2026-06-20T03:13:21.2007102Z       "stages": {
2026-06-20T03:13:21.2007206Z         "doc": {
2026-06-20T03:13:21.2007329Z           "complete": false,
2026-06-20T03:13:21.2007438Z           "evidence": []
2026-06-20T03:13:21.2007533Z         },
2026-06-20T03:13:21.2007641Z         "impl": {
2026-06-20T03:13:21.2007755Z           "complete": false,
2026-06-20T03:13:21.2007856Z           "evidence": []
2026-06-20T03:13:21.2007961Z         },
2026-06-20T03:13:21.2008061Z         "int": {
2026-06-20T03:13:21.2008181Z           "complete": false,
2026-06-20T03:13:21.2008284Z           "evidence": []
2026-06-20T03:13:21.2008385Z         },
2026-06-20T03:13:21.2008490Z         "unit": {
2026-06-20T03:13:21.2008599Z           "complete": false,
2026-06-20T03:13:21.2008705Z           "evidence": []
2026-06-20T03:13:21.2008809Z         }
2026-06-20T03:13:21.2008910Z       }
2026-06-20T03:13:21.2009073Z     },
2026-06-20T03:13:21.2009176Z     {
2026-06-20T03:13:21.2009286Z       "id": "REQ-MSG-1",
2026-06-20T03:13:21.2009867Z       "title": "Local message delivery: TCP-first to a registered address, spool fallback when offline; id->address via registry (stale-clean first); reply routing (__REPLY_TO__)",
2026-06-20T03:13:21.2010079Z       "requiredStages": [
2026-06-20T03:13:21.2010172Z         "impl",
2026-06-20T03:13:21.2010276Z         "unit",
2026-06-20T03:13:21.2010382Z         "int"
2026-06-20T03:13:21.2010478Z       ],
2026-06-20T03:13:21.2010581Z       "stages": {
2026-06-20T03:13:21.2010682Z         "doc": {
2026-06-20T03:13:21.2010788Z           "complete": false,
2026-06-20T03:13:21.2010891Z           "evidence": []
2026-06-20T03:13:21.2010993Z         },
2026-06-20T03:13:21.2011097Z         "impl": {
2026-06-20T03:13:21.2011215Z           "complete": true,
2026-06-20T03:13:21.2011317Z           "evidence": [
2026-06-20T03:13:21.2011417Z             {
2026-06-20T03:13:21.2011550Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-20T03:13:21.2011656Z               "line": 28
2026-06-20T03:13:21.2011764Z             },
2026-06-20T03:13:21.2011864Z             {
2026-06-20T03:13:21.2012004Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-20T03:13:21.2012112Z               "line": 94
2026-06-20T03:13:21.2012208Z             },
2026-06-20T03:13:21.2012309Z             {
2026-06-20T03:13:21.2012445Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-20T03:13:21.2012555Z               "line": 127
2026-06-20T03:13:21.2012660Z             },
2026-06-20T03:13:21.2012753Z             {
2026-06-20T03:13:21.2012882Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-20T03:13:21.2012997Z               "line": 149
2026-06-20T03:13:21.2013096Z             },
2026-06-20T03:13:21.2013196Z             {
2026-06-20T03:13:21.2013340Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-20T03:13:21.2013444Z               "line": 174
2026-06-20T03:13:21.2013545Z             },
2026-06-20T03:13:21.2013640Z             {
2026-06-20T03:13:21.2013782Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-20T03:13:21.2013903Z               "line": 18
2026-06-20T03:13:21.2013998Z             },
2026-06-20T03:13:21.2014107Z             {
2026-06-20T03:13:21.2014246Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-20T03:13:21.2014351Z               "line": 13
2026-06-20T03:13:21.2014455Z             },
2026-06-20T03:13:21.2014547Z             {
2026-06-20T03:13:21.2014684Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-20T03:13:21.2014795Z               "line": 62
2026-06-20T03:13:21.2014900Z             },
2026-06-20T03:13:21.2015009Z             {
2026-06-20T03:13:21.2015138Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-20T03:13:21.2015243Z               "line": 13
2026-06-20T03:13:21.2015341Z             }
2026-06-20T03:13:21.2015446Z           ]
2026-06-20T03:13:21.2015546Z         },
2026-06-20T03:13:21.2015644Z         "int": {
2026-06-20T03:13:21.2015759Z           "complete": true,
2026-06-20T03:13:21.2015859Z           "evidence": [
2026-06-20T03:13:21.2015963Z             {
2026-06-20T03:13:21.2016136Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-20T03:13:21.2016255Z               "line": 9
2026-06-20T03:13:21.2016354Z             },
2026-06-20T03:13:21.2016460Z             {
2026-06-20T03:13:21.2016616Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-20T03:13:21.2016722Z               "line": 56
2026-06-20T03:13:21.2016827Z             },
2026-06-20T03:13:21.2016926Z             {
2026-06-20T03:13:21.2017080Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-20T03:13:21.2017189Z               "line": 113
2026-06-20T03:13:21.2017294Z             }
2026-06-20T03:13:21.2017400Z           ]
2026-06-20T03:13:21.2017498Z         },
2026-06-20T03:13:21.2017613Z         "unit": {
2026-06-20T03:13:21.2017715Z           "complete": true,
2026-06-20T03:13:21.2017823Z           "evidence": [
2026-06-20T03:13:21.2017922Z             {
2026-06-20T03:13:21.2018056Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-20T03:13:21.2018249Z               "line": 203
2026-06-20T03:13:21.2018421Z             },
2026-06-20T03:13:21.2018525Z             {
2026-06-20T03:13:21.2018654Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-20T03:13:21.2018764Z               "line": 232
2026-06-20T03:13:21.2018864Z             },
2026-06-20T03:13:21.2019022Z             {
2026-06-20T03:13:21.2019155Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-20T03:13:21.2019255Z               "line": 277
2026-06-20T03:13:21.2019365Z             },
2026-06-20T03:13:21.2019465Z             {
2026-06-20T03:13:21.2019599Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-20T03:13:21.2019708Z               "line": 300
2026-06-20T03:13:21.2019817Z             },
2026-06-20T03:13:21.2019923Z             {
2026-06-20T03:13:21.2020056Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-20T03:13:21.2020171Z               "line": 325
2026-06-20T03:13:21.2020267Z             },
2026-06-20T03:13:21.2020375Z             {
2026-06-20T03:13:21.2020500Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-20T03:13:21.2020616Z               "line": 204
2026-06-20T03:13:21.2020718Z             },
2026-06-20T03:13:21.2020808Z             {
2026-06-20T03:13:21.2020947Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-20T03:13:21.2021052Z               "line": 237
2026-06-20T03:13:21.2021156Z             },
2026-06-20T03:13:21.2021257Z             {
2026-06-20T03:13:21.2021385Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-20T03:13:21.2021490Z               "line": 251
2026-06-20T03:13:21.2021591Z             },
2026-06-20T03:13:21.2021691Z             {
2026-06-20T03:13:21.2021829Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-20T03:13:21.2021944Z               "line": 263
2026-06-20T03:13:21.2022043Z             },
2026-06-20T03:13:21.2022144Z             {
2026-06-20T03:13:21.2022287Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-20T03:13:21.2022392Z               "line": 162
2026-06-20T03:13:21.2022498Z             },
2026-06-20T03:13:21.2022597Z             {
2026-06-20T03:13:21.2022730Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-20T03:13:21.2022841Z               "line": 242
2026-06-20T03:13:21.2022944Z             },
2026-06-20T03:13:21.2023048Z             {
2026-06-20T03:13:21.2023177Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-20T03:13:21.2023285Z               "line": 134
2026-06-20T03:13:21.2023384Z             },
2026-06-20T03:13:21.2023485Z             {
2026-06-20T03:13:21.2023623Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-20T03:13:21.2023723Z               "line": 153
2026-06-20T03:13:21.2023834Z             }
2026-06-20T03:13:21.2023933Z           ]
2026-06-20T03:13:21.2024033Z         }
2026-06-20T03:13:21.2024129Z       }
2026-06-20T03:13:21.2024234Z     },
2026-06-20T03:13:21.2024323Z     {
2026-06-20T03:13:21.2024425Z       "id": "REQ-MSG-2",
2026-06-20T03:13:21.2024730Z       "title": "spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes",
2026-06-20T03:13:21.2024854Z       "requiredStages": [
2026-06-20T03:13:21.2024967Z         "impl",
2026-06-20T03:13:21.2025065Z         "unit"
2026-06-20T03:13:21.2025168Z       ],
2026-06-20T03:13:21.2025273Z       "stages": {
2026-06-20T03:13:21.2025370Z         "doc": {
2026-06-20T03:13:21.2025483Z           "complete": false,
2026-06-20T03:13:21.2025597Z           "evidence": []
2026-06-20T03:13:21.2025704Z         },
2026-06-20T03:13:21.2025807Z         "impl": {
2026-06-20T03:13:21.2025925Z           "complete": true,
2026-06-20T03:13:21.2026035Z           "evidence": [
2026-06-20T03:13:21.2026134Z             {
2026-06-20T03:13:21.2026256Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2026352Z               "line": 11
2026-06-20T03:13:21.2026458Z             },
2026-06-20T03:13:21.2026556Z             {
2026-06-20T03:13:21.2026801Z               "path": "crates/spt/src/main.rs",
2026-06-20T03:13:21.2026905Z               "line": 8
2026-06-20T03:13:21.2027106Z             }
2026-06-20T03:13:21.2027210Z           ]
2026-06-20T03:13:21.2027302Z         },
2026-06-20T03:13:21.2027411Z         "int": {
2026-06-20T03:13:21.2027515Z           "complete": false,
2026-06-20T03:13:21.2027626Z           "evidence": []
2026-06-20T03:13:21.2027730Z         },
2026-06-20T03:13:21.2027830Z         "unit": {
2026-06-20T03:13:21.2027946Z           "complete": true,
2026-06-20T03:13:21.2028055Z           "evidence": [
2026-06-20T03:13:21.2028154Z             {
2026-06-20T03:13:21.2028280Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2028388Z               "line": 7717
2026-06-20T03:13:21.2028492Z             },
2026-06-20T03:13:21.2028587Z             {
2026-06-20T03:13:21.2028719Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2028823Z               "line": 7759
2026-06-20T03:13:21.2028924Z             },
2026-06-20T03:13:21.2029099Z             {
2026-06-20T03:13:21.2029219Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2029329Z               "line": 7808
2026-06-20T03:13:21.2029433Z             },
2026-06-20T03:13:21.2029534Z             {
2026-06-20T03:13:21.2029663Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2029777Z               "line": 7831
2026-06-20T03:13:21.2029878Z             },
2026-06-20T03:13:21.2029987Z             {
2026-06-20T03:13:21.2030111Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2030217Z               "line": 9807
2026-06-20T03:13:21.2030326Z             },
2026-06-20T03:13:21.2030426Z             {
2026-06-20T03:13:21.2030556Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2030659Z               "line": 9816
2026-06-20T03:13:21.2030764Z             },
2026-06-20T03:13:21.2030871Z             {
2026-06-20T03:13:21.2030993Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2031119Z               "line": 9830
2026-06-20T03:13:21.2031218Z             }
2026-06-20T03:13:21.2031326Z           ]
2026-06-20T03:13:21.2031426Z         }
2026-06-20T03:13:21.2031527Z       }
2026-06-20T03:13:21.2031631Z     },
2026-06-20T03:13:21.2031731Z     {
2026-06-20T03:13:21.2031837Z       "id": "REQ-MSG-3",
2026-06-20T03:13:21.2032251Z       "title": "Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown",
2026-06-20T03:13:21.2032365Z       "requiredStages": [
2026-06-20T03:13:21.2032471Z         "impl",
2026-06-20T03:13:21.2032571Z         "unit",
2026-06-20T03:13:21.2032675Z         "int"
2026-06-20T03:13:21.2032762Z       ],
2026-06-20T03:13:21.2032871Z       "stages": {
2026-06-20T03:13:21.2032966Z         "doc": {
2026-06-20T03:13:21.2033087Z           "complete": false,
2026-06-20T03:13:21.2033194Z           "evidence": []
2026-06-20T03:13:21.2033300Z         },
2026-06-20T03:13:21.2033406Z         "impl": {
2026-06-20T03:13:21.2033514Z           "complete": true,
2026-06-20T03:13:21.2033628Z           "evidence": [
2026-06-20T03:13:21.2033728Z             {
2026-06-20T03:13:21.2033878Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-20T03:13:21.2033988Z               "line": 19
2026-06-20T03:13:21.2034094Z             },
2026-06-20T03:13:21.2034198Z             {
2026-06-20T03:13:21.2034341Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-20T03:13:21.2034456Z               "line": 21
2026-06-20T03:13:21.2034550Z             },
2026-06-20T03:13:21.2034656Z             {
2026-06-20T03:13:21.2034785Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-20T03:13:21.2034898Z               "line": 48
2026-06-20T03:13:21.2035005Z             },
2026-06-20T03:13:21.2035104Z             {
2026-06-20T03:13:21.2035247Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-20T03:13:21.2035357Z               "line": 174
2026-06-20T03:13:21.2035457Z             }
2026-06-20T03:13:21.2035662Z           ]
2026-06-20T03:13:21.2035766Z         },
2026-06-20T03:13:21.2035871Z         "int": {
2026-06-20T03:13:21.2036076Z           "complete": true,
2026-06-20T03:13:21.2036191Z           "evidence": [
2026-06-20T03:13:21.2036288Z             {
2026-06-20T03:13:21.2036452Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-20T03:13:21.2036566Z               "line": 10
2026-06-20T03:13:21.2036670Z             },
2026-06-20T03:13:21.2036774Z             {
2026-06-20T03:13:21.2036932Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-20T03:13:21.2037037Z               "line": 56
2026-06-20T03:13:21.2037126Z             }
2026-06-20T03:13:21.2037228Z           ]
2026-06-20T03:13:21.2037332Z         },
2026-06-20T03:13:21.2037432Z         "unit": {
2026-06-20T03:13:21.2037543Z           "complete": true,
2026-06-20T03:13:21.2037647Z           "evidence": [
2026-06-20T03:13:21.2037751Z             {
2026-06-20T03:13:21.2037877Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-20T03:13:21.2037999Z               "line": 228
2026-06-20T03:13:21.2038104Z             },
2026-06-20T03:13:21.2038210Z             {
2026-06-20T03:13:21.2038342Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-20T03:13:21.2038448Z               "line": 247
2026-06-20T03:13:21.2038558Z             },
2026-06-20T03:13:21.2038652Z             {
2026-06-20T03:13:21.2038787Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-20T03:13:21.2038892Z               "line": 270
2026-06-20T03:13:21.2039071Z             }
2026-06-20T03:13:21.2039176Z           ]
2026-06-20T03:13:21.2039275Z         }
2026-06-20T03:13:21.2039378Z       }
2026-06-20T03:13:21.2039479Z     },
2026-06-20T03:13:21.2039585Z     {
2026-06-20T03:13:21.2039693Z       "id": "REQ-MSG-4",
2026-06-20T03:13:21.2040542Z       "title": "Listener stream stdout emits EVENT envelope lines (sister-format, ADR-0001): parse the __REPLY_TO__ frame, pass pre-formed typed envelopes through verbatim (no double-wrap), compose <EVENT type=\"msg\" from=…> otherwise, chunk oversized lines into EVENT-PART",
2026-06-20T03:13:21.2040676Z       "requiredStages": [
2026-06-20T03:13:21.2040782Z         "impl",
2026-06-20T03:13:21.2040886Z         "unit",
2026-06-20T03:13:21.2040991Z         "int"
2026-06-20T03:13:21.2041096Z       ],
2026-06-20T03:13:21.2041205Z       "stages": {
2026-06-20T03:13:21.2041310Z         "doc": {
2026-06-20T03:13:21.2041421Z           "complete": false,
2026-06-20T03:13:21.2041524Z           "evidence": []
2026-06-20T03:13:21.2041630Z         },
2026-06-20T03:13:21.2041731Z         "impl": {
2026-06-20T03:13:21.2041839Z           "complete": true,
2026-06-20T03:13:21.2041948Z           "evidence": [
2026-06-20T03:13:21.2042043Z             {
2026-06-20T03:13:21.2042187Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-20T03:13:21.2042291Z               "line": 19
2026-06-20T03:13:21.2042393Z             },
2026-06-20T03:13:21.2042497Z             {
2026-06-20T03:13:21.2042645Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-20T03:13:21.2042754Z               "line": 46
2026-06-20T03:13:21.2042858Z             },
2026-06-20T03:13:21.2042969Z             {
2026-06-20T03:13:21.2043106Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.2043221Z               "line": 532
2026-06-20T03:13:21.2043322Z             },
2026-06-20T03:13:21.2043421Z             {
2026-06-20T03:13:21.2043555Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2043661Z               "line": 3110
2026-06-20T03:13:21.2043764Z             }
2026-06-20T03:13:21.2043865Z           ]
2026-06-20T03:13:21.2043971Z         },
2026-06-20T03:13:21.2044074Z         "int": {
2026-06-20T03:13:21.2044188Z           "complete": true,
2026-06-20T03:13:21.2044298Z           "evidence": [
2026-06-20T03:13:21.2044396Z             {
2026-06-20T03:13:21.2044538Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-20T03:13:21.2044639Z               "line": 98
2026-06-20T03:13:21.2044843Z             },
2026-06-20T03:13:21.2044950Z             {
2026-06-20T03:13:21.2045101Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-20T03:13:21.2045311Z               "line": 128
2026-06-20T03:13:21.2045415Z             }
2026-06-20T03:13:21.2045512Z           ]
2026-06-20T03:13:21.2045612Z         },
2026-06-20T03:13:21.2045716Z         "unit": {
2026-06-20T03:13:21.2045826Z           "complete": true,
2026-06-20T03:13:21.2045945Z           "evidence": [
2026-06-20T03:13:21.2046050Z             {
2026-06-20T03:13:21.2046190Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-20T03:13:21.2046303Z               "line": 68
2026-06-20T03:13:21.2046403Z             },
2026-06-20T03:13:21.2046504Z             {
2026-06-20T03:13:21.2046636Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-20T03:13:21.2046737Z               "line": 79
2026-06-20T03:13:21.2046838Z             },
2026-06-20T03:13:21.2046941Z             {
2026-06-20T03:13:21.2047083Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-20T03:13:21.2047184Z               "line": 90
2026-06-20T03:13:21.2047296Z             },
2026-06-20T03:13:21.2047400Z             {
2026-06-20T03:13:21.2047535Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-20T03:13:21.2047639Z               "line": 151
2026-06-20T03:13:21.2047739Z             }
2026-06-20T03:13:21.2047835Z           ]
2026-06-20T03:13:21.2047935Z         }
2026-06-20T03:13:21.2048044Z       }
2026-06-20T03:13:21.2048136Z     },
2026-06-20T03:13:21.2048231Z     {
2026-06-20T03:13:21.2048340Z       "id": "REQ-MSG-5",
2026-06-20T03:13:21.2049179Z       "title": "user-msg envelope kind + daemon identity gate: a Gateway endpoint / the local user's CLI author user-msg (the user's authority); agent-family senders re-stamped to plain msg; identity-gated never payload-trusted (KH 7.3/7.5); wire-additive (N-1 receivers tolerate the new type)",
2026-06-20T03:13:21.2049294Z       "requiredStages": [
2026-06-20T03:13:21.2049396Z         "doc",
2026-06-20T03:13:21.2049504Z         "impl",
2026-06-20T03:13:21.2049612Z         "unit"
2026-06-20T03:13:21.2049713Z       ],
2026-06-20T03:13:21.2049816Z       "stages": {
2026-06-20T03:13:21.2049915Z         "doc": {
2026-06-20T03:13:21.2050025Z           "complete": true,
2026-06-20T03:13:21.2050126Z           "evidence": [
2026-06-20T03:13:21.2050235Z             {
2026-06-20T03:13:21.2050360Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.2050469Z               "line": 231
2026-06-20T03:13:21.2050577Z             }
2026-06-20T03:13:21.2050675Z           ]
2026-06-20T03:13:21.2050774Z         },
2026-06-20T03:13:21.2050878Z         "impl": {
2026-06-20T03:13:21.2050999Z           "complete": true,
2026-06-20T03:13:21.2051112Z           "evidence": [
2026-06-20T03:13:21.2051217Z             {
2026-06-20T03:13:21.2051361Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-20T03:13:21.2051465Z               "line": 60
2026-06-20T03:13:21.2051565Z             },
2026-06-20T03:13:21.2051671Z             {
2026-06-20T03:13:21.2051818Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T03:13:21.2051934Z               "line": 126
2026-06-20T03:13:21.2052033Z             },
2026-06-20T03:13:21.2052142Z             {
2026-06-20T03:13:21.2052277Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T03:13:21.2052399Z               "line": 135
2026-06-20T03:13:21.2052498Z             },
2026-06-20T03:13:21.2052608Z             {
2026-06-20T03:13:21.2052752Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T03:13:21.2052856Z               "line": 149
2026-06-20T03:13:21.2052967Z             },
2026-06-20T03:13:21.2053071Z             {
2026-06-20T03:13:21.2053210Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T03:13:21.2053329Z               "line": 178
2026-06-20T03:13:21.2053428Z             },
2026-06-20T03:13:21.2053539Z             {
2026-06-20T03:13:21.2053662Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2053873Z               "line": 2802
2026-06-20T03:13:21.2053977Z             }
2026-06-20T03:13:21.2054077Z           ]
2026-06-20T03:13:21.2054264Z         },
2026-06-20T03:13:21.2054368Z         "int": {
2026-06-20T03:13:21.2054498Z           "complete": true,
2026-06-20T03:13:21.2054606Z           "evidence": [
2026-06-20T03:13:21.2054710Z             {
2026-06-20T03:13:21.2054858Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-20T03:13:21.2054966Z               "line": 19
2026-06-20T03:13:21.2055060Z             }
2026-06-20T03:13:21.2055151Z           ]
2026-06-20T03:13:21.2055258Z         },
2026-06-20T03:13:21.2055356Z         "unit": {
2026-06-20T03:13:21.2055466Z           "complete": true,
2026-06-20T03:13:21.2055576Z           "evidence": [
2026-06-20T03:13:21.2055675Z             {
2026-06-20T03:13:21.2055805Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-20T03:13:21.2055924Z               "line": 192
2026-06-20T03:13:21.2056028Z             },
2026-06-20T03:13:21.2056134Z             {
2026-06-20T03:13:21.2056286Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-20T03:13:21.2056396Z               "line": 154
2026-06-20T03:13:21.2056501Z             },
2026-06-20T03:13:21.2056606Z             {
2026-06-20T03:13:21.2056740Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-20T03:13:21.2056854Z               "line": 122
2026-06-20T03:13:21.2056953Z             },
2026-06-20T03:13:21.2057055Z             {
2026-06-20T03:13:21.2057182Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T03:13:21.2057287Z               "line": 452
2026-06-20T03:13:21.2057394Z             },
2026-06-20T03:13:21.2057493Z             {
2026-06-20T03:13:21.2057634Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T03:13:21.2057744Z               "line": 501
2026-06-20T03:13:21.2057852Z             },
2026-06-20T03:13:21.2057947Z             {
2026-06-20T03:13:21.2058090Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T03:13:21.2058209Z               "line": 517
2026-06-20T03:13:21.2058309Z             },
2026-06-20T03:13:21.2058419Z             {
2026-06-20T03:13:21.2058557Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T03:13:21.2058658Z               "line": 536
2026-06-20T03:13:21.2058762Z             },
2026-06-20T03:13:21.2058867Z             {
2026-06-20T03:13:21.2059058Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2059172Z               "line": 7660
2026-06-20T03:13:21.2059278Z             }
2026-06-20T03:13:21.2059373Z           ]
2026-06-20T03:13:21.2059478Z         }
2026-06-20T03:13:21.2059578Z       }
2026-06-20T03:13:21.2059684Z     },
2026-06-20T03:13:21.2059792Z     {
2026-06-20T03:13:21.2059903Z       "id": "REQ-MSG-6",
2026-06-20T03:13:21.2061530Z       "title": "cross-node Gateway user-msg honored via advertised endpoint_type: a user-msg from a Gateway-typed origin survives the receive_wan funnel as user-msg (vs the fail-closed re-stamp), keyed on the QUIC-handshake-proven origin node (never wire `from`). Trust boundary = subnet membership (operator-ratified 2026-06-13); no defense against an in-subnet member forging the type. Instance.endpoint_type is an additive serde-default field extending REQ-INST-7's data model. Absent/unknown type → re-stamp (N-1 rollout grace)",
2026-06-20T03:13:21.2061653Z       "requiredStages": [
2026-06-20T03:13:21.2061743Z         "doc",
2026-06-20T03:13:21.2061845Z         "impl",
2026-06-20T03:13:21.2061949Z         "unit"
2026-06-20T03:13:21.2062049Z       ],
2026-06-20T03:13:21.2062150Z       "stages": {
2026-06-20T03:13:21.2062250Z         "doc": {
2026-06-20T03:13:21.2062364Z           "complete": true,
2026-06-20T03:13:21.2062484Z           "evidence": [
2026-06-20T03:13:21.2062588Z             {
2026-06-20T03:13:21.2062712Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.2062818Z               "line": 234
2026-06-20T03:13:21.2062917Z             }
2026-06-20T03:13:21.2063021Z           ]
2026-06-20T03:13:21.2063236Z         },
2026-06-20T03:13:21.2063350Z         "impl": {
2026-06-20T03:13:21.2063469Z           "complete": true,
2026-06-20T03:13:21.2063688Z           "evidence": [
2026-06-20T03:13:21.2063790Z             {
2026-06-20T03:13:21.2063946Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.2064056Z               "line": 177
2026-06-20T03:13:21.2064161Z             },
2026-06-20T03:13:21.2064266Z             {
2026-06-20T03:13:21.2064429Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.2064537Z               "line": 428
2026-06-20T03:13:21.2064642Z             },
2026-06-20T03:13:21.2064739Z             {
2026-06-20T03:13:21.2064885Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.2067625Z               "line": 451
2026-06-20T03:13:21.2067757Z             },
2026-06-20T03:13:21.2067852Z             {
2026-06-20T03:13:21.2068006Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-20T03:13:21.2068142Z               "line": 89
2026-06-20T03:13:21.2068242Z             },
2026-06-20T03:13:21.2068351Z             {
2026-06-20T03:13:21.2068516Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.2068627Z               "line": 155
2026-06-20T03:13:21.2068727Z             }
2026-06-20T03:13:21.2068826Z           ]
2026-06-20T03:13:21.2068932Z         },
2026-06-20T03:13:21.2069117Z         "int": {
2026-06-20T03:13:21.2069233Z           "complete": false,
2026-06-20T03:13:21.2069342Z           "evidence": []
2026-06-20T03:13:21.2069441Z         },
2026-06-20T03:13:21.2069547Z         "unit": {
2026-06-20T03:13:21.2069661Z           "complete": true,
2026-06-20T03:13:21.2069766Z           "evidence": [
2026-06-20T03:13:21.2069867Z             {
2026-06-20T03:13:21.2070028Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.2070148Z               "line": 1746
2026-06-20T03:13:21.2070249Z             },
2026-06-20T03:13:21.2070347Z             {
2026-06-20T03:13:21.2070483Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-20T03:13:21.2070601Z               "line": 219
2026-06-20T03:13:21.2070700Z             }
2026-06-20T03:13:21.2070795Z           ]
2026-06-20T03:13:21.2070904Z         }
2026-06-20T03:13:21.2071007Z       }
2026-06-20T03:13:21.2071107Z     },
2026-06-20T03:13:21.2071208Z     {
2026-06-20T03:13:21.2071326Z       "id": "REQ-MSG-ENVELOPE",
2026-06-20T03:13:21.2075050Z       "title": "The <EVENT type=\"msg\" from=…>body</EVENT> envelope (spt-proto::event, the ADR-0001 grammar) is the SOLE canonical arriving-message format at EVERY harness arriving-message surface on an AGENT perch — api listen AND api poll/worker-poll, byte-identical (reverses REQ-MSG-4's 'hook drains keep the raw frame by contract'). SCOPE CARVE-OUT: the shell-command relay (api poll <shell-id> --link, cmd_poll_shell) is a distinct internal transport carrying RAW MAC'd stamped frames the shell child consumes verbatim — NOT an arriving-message surface, deliberately EXEMPT from <EVENT> composition (notify_shell_e2e guards this boundary). __REPLY_TO__ — mis-elevated during the clean-room port to a fake ADR-0001 'stable wire format' (spt-msg/wire.rs, lib.rs) — is REMOVED entirely (spool format_row, the spt-msg TCP frame, emit parse_frame); (from, body) carried structurally, <EVENT> composed once at the delivery boundary. No legacy sister-interop (spt-core never required it). Reply-correlation rebinds onto the structural from / <EVENT from=…> attribute (ADR-0009 access-gate + ADR-0012 Psyche/spt-live reply-target). Self-delimiting by construction → finding F-002 (non-self-delimiting multi-message poll) dissolves. ADR-0020.",
2026-06-20T03:13:21.2075221Z       "requiredStages": [
2026-06-20T03:13:21.2075308Z         "doc",
2026-06-20T03:13:21.2075417Z         "impl",
2026-06-20T03:13:21.2075517Z         "unit",
2026-06-20T03:13:21.2075618Z         "int"
2026-06-20T03:13:21.2075722Z       ],
2026-06-20T03:13:21.2075826Z       "stages": {
2026-06-20T03:13:21.2075935Z         "doc": {
2026-06-20T03:13:21.2076200Z           "complete": true,
2026-06-20T03:13:21.2076315Z           "evidence": [
2026-06-20T03:13:21.2076529Z             {
2026-06-20T03:13:21.2076782Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-20T03:13:21.2076892Z               "line": 47
2026-06-20T03:13:21.2076992Z             }
2026-06-20T03:13:21.2077096Z           ]
2026-06-20T03:13:21.2077192Z         },
2026-06-20T03:13:21.2077297Z         "impl": {
2026-06-20T03:13:21.2077421Z           "complete": true,
2026-06-20T03:13:21.2077526Z           "evidence": [
2026-06-20T03:13:21.2077626Z             {
2026-06-20T03:13:21.2077764Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-20T03:13:21.2077875Z               "line": 20
2026-06-20T03:13:21.2077969Z             },
2026-06-20T03:13:21.2078074Z             {
2026-06-20T03:13:21.2078214Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-20T03:13:21.2078322Z               "line": 33
2026-06-20T03:13:21.2078432Z             },
2026-06-20T03:13:21.2078529Z             {
2026-06-20T03:13:21.2078656Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-20T03:13:21.2078764Z               "line": 47
2026-06-20T03:13:21.2078869Z             },
2026-06-20T03:13:21.2079081Z             {
2026-06-20T03:13:21.2079207Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-20T03:13:21.2079320Z               "line": 58
2026-06-20T03:13:21.2079420Z             },
2026-06-20T03:13:21.2079526Z             {
2026-06-20T03:13:21.2079649Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-20T03:13:21.2079749Z               "line": 14
2026-06-20T03:13:21.2079850Z             },
2026-06-20T03:13:21.2079940Z             {
2026-06-20T03:13:21.2080078Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-20T03:13:21.2080184Z               "line": 27
2026-06-20T03:13:21.2080279Z             },
2026-06-20T03:13:21.2080379Z             {
2026-06-20T03:13:21.2080513Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-20T03:13:21.2080622Z               "line": 40
2026-06-20T03:13:21.2080723Z             },
2026-06-20T03:13:21.2080823Z             {
2026-06-20T03:13:21.2080965Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T03:13:21.2081081Z               "line": 92
2026-06-20T03:13:21.2081180Z             },
2026-06-20T03:13:21.2081274Z             {
2026-06-20T03:13:21.2081426Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T03:13:21.2081534Z               "line": 143
2026-06-20T03:13:21.2081639Z             },
2026-06-20T03:13:21.2081729Z             {
2026-06-20T03:13:21.2081873Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T03:13:21.2081973Z               "line": 216
2026-06-20T03:13:21.2082069Z             },
2026-06-20T03:13:21.2082178Z             {
2026-06-20T03:13:21.2082311Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.2082417Z               "line": 533
2026-06-20T03:13:21.2082507Z             },
2026-06-20T03:13:21.2082616Z             {
2026-06-20T03:13:21.2082760Z               "path": "crates/spt/src/api/worker.rs",
2026-06-20T03:13:21.2082874Z               "line": 78
2026-06-20T03:13:21.2082975Z             },
2026-06-20T03:13:21.2083075Z             {
2026-06-20T03:13:21.2083212Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2083318Z               "line": 3111
2026-06-20T03:13:21.2083427Z             }
2026-06-20T03:13:21.2083532Z           ]
2026-06-20T03:13:21.2083629Z         },
2026-06-20T03:13:21.2083737Z         "int": {
2026-06-20T03:13:21.2083846Z           "complete": true,
2026-06-20T03:13:21.2083957Z           "evidence": [
2026-06-20T03:13:21.2084061Z             {
2026-06-20T03:13:21.2084232Z               "path": "crates/spt/tests/poll_envelope_e2e.rs",
2026-06-20T03:13:21.2084342Z               "line": 15
2026-06-20T03:13:21.2084451Z             }
2026-06-20T03:13:21.2084561Z           ]
2026-06-20T03:13:21.2084657Z         },
2026-06-20T03:13:21.2084871Z         "unit": {
2026-06-20T03:13:21.2084981Z           "complete": true,
2026-06-20T03:13:21.2085085Z           "evidence": [
2026-06-20T03:13:21.2085277Z             {
2026-06-20T03:13:21.2085410Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-20T03:13:21.2085525Z               "line": 102
2026-06-20T03:13:21.2085625Z             },
2026-06-20T03:13:21.2085729Z             {
2026-06-20T03:13:21.2085854Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-20T03:13:21.2085958Z               "line": 137
2026-06-20T03:13:21.2086063Z             },
2026-06-20T03:13:21.2086159Z             {
2026-06-20T03:13:21.2086297Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-20T03:13:21.2086405Z               "line": 98
2026-06-20T03:13:21.2086505Z             },
2026-06-20T03:13:21.2086609Z             {
2026-06-20T03:13:21.2086737Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-20T03:13:21.2086856Z               "line": 106
2026-06-20T03:13:21.2086957Z             },
2026-06-20T03:13:21.2087061Z             {
2026-06-20T03:13:21.2087191Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-20T03:13:21.2087304Z               "line": 113
2026-06-20T03:13:21.2087404Z             },
2026-06-20T03:13:21.2087501Z             {
2026-06-20T03:13:21.2087637Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-20T03:13:21.2087733Z               "line": 122
2026-06-20T03:13:21.2087839Z             }
2026-06-20T03:13:21.2087929Z           ]
2026-06-20T03:13:21.2088029Z         }
2026-06-20T03:13:21.2088130Z       }
2026-06-20T03:13:21.2088234Z     },
2026-06-20T03:13:21.2088334Z     {
2026-06-20T03:13:21.2088474Z       "id": "REQ-MSG-IDLE-TRANSLATION-BINARY",
2026-06-20T03:13:21.2093467Z       "title": "spt-hosted idle message delivery via an adapter TRANSLATION BINARY (ADR-0022). New opt-in manifest section `[message-idle-translation-binary]` = a TABLE carrying a `path` scalar (doyle OPT-B ruling: modeled as a table, not a bare top-level scalar, so a preceding section cannot silently absorb it + N+1 extensible; spt-core does NOT deny_unknown_fields, so a future key degrades gracefully); spt-core LIFECYCLE-manages it (spawn when the endpoint comes up, terminate when it goes down). The binary is a PURE stdin→stdout filter; spt-core owns EVERY PTY write. stdin (JSON-lines): `{type:\"init\",endpoint_id,node}` first · `{type:\"event\",envelope:\"<EVENT…>\"}` per inbound message (ADR-0020 envelope) · `{type:\"input\"}` content-free ping on each operator keystroke (binary tracks user-idle for its own idle-gated buffering; PTY input content NOT duplicated). stdout (JSON-lines): keystroke-commands `{key:…}`/`{delay_ms:…}`/`{text:…}` (extensible). spt-core applies the emitted sequence to the broker PTY ATOMICALLY (the W1 coordination — REQ-HAZARD-INJECT-CONTROL-COEXIST). The daemon poll feed is the ONE idle substrate for both topologies (Q1=A): harness-hosted consumer = the Monitor child, spt-hosted consumer = this binary; spt-core PREFERS a perch's poll listener if one exists (so spt-hosted can run a listener AND keep `spt rc`). Idle-only; busy/mid-turn = adapter hook-injection. Closes the current grounding gap: `api bind` registers no listener port → a listener-less spt-hosted perch SPOOLS inbound (only spooling+adapter-poll works today) → this delivers real inbound into the PTY. The v0.11.0 raw inject is the degenerate `{text:payload}{key:enter}` case. (v0.13.0)",
2026-06-20T03:13:21.2093640Z       "requiredStages": [
2026-06-20T03:13:21.2093744Z         "doc",
2026-06-20T03:13:21.2093845Z         "impl",
2026-06-20T03:13:21.2093949Z         "unit",
2026-06-20T03:13:21.2094045Z         "int"
2026-06-20T03:13:21.2094150Z       ],
2026-06-20T03:13:21.2094255Z       "stages": {
2026-06-20T03:13:21.2094359Z         "doc": {
2026-06-20T03:13:21.2094475Z           "complete": true,
2026-06-20T03:13:21.2094584Z           "evidence": [
2026-06-20T03:13:21.2094687Z             {
2026-06-20T03:13:21.2094845Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-20T03:13:21.2095083Z               "line": 277
2026-06-20T03:13:21.2095189Z             },
2026-06-20T03:13:21.2095284Z             {
2026-06-20T03:13:21.2095503Z               "path": "docs/MANIFEST.md",
2026-06-20T03:13:21.2095613Z               "line": 198
2026-06-20T03:13:21.2095717Z             }
2026-06-20T03:13:21.2095818Z           ]
2026-06-20T03:13:21.2095917Z         },
2026-06-20T03:13:21.2096022Z         "impl": {
2026-06-20T03:13:21.2096128Z           "complete": true,
2026-06-20T03:13:21.2096237Z           "evidence": [
2026-06-20T03:13:21.2096337Z             {
2026-06-20T03:13:21.2096490Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.2096599Z               "line": 939
2026-06-20T03:13:21.2096700Z             },
2026-06-20T03:13:21.2096805Z             {
2026-06-20T03:13:21.2096951Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-20T03:13:21.2097061Z               "line": 23
2026-06-20T03:13:21.2097160Z             },
2026-06-20T03:13:21.2097259Z             {
2026-06-20T03:13:21.2097416Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-20T03:13:21.2097526Z               "line": 91
2026-06-20T03:13:21.2097626Z             },
2026-06-20T03:13:21.2097726Z             {
2026-06-20T03:13:21.2097879Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-20T03:13:21.2097978Z               "line": 239
2026-06-20T03:13:21.2098085Z             },
2026-06-20T03:13:21.2098184Z             {
2026-06-20T03:13:21.2098328Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-20T03:13:21.2098441Z               "line": 287
2026-06-20T03:13:21.2098536Z             },
2026-06-20T03:13:21.2098637Z             {
2026-06-20T03:13:21.2098784Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-20T03:13:21.2098894Z               "line": 311
2026-06-20T03:13:21.2099071Z             },
2026-06-20T03:13:21.2099176Z             {
2026-06-20T03:13:21.2099330Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.2099442Z               "line": 60
2026-06-20T03:13:21.2099543Z             },
2026-06-20T03:13:21.2099649Z             {
2026-06-20T03:13:21.2099794Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.2099899Z               "line": 889
2026-06-20T03:13:21.2100000Z             }
2026-06-20T03:13:21.2100107Z           ]
2026-06-20T03:13:21.2100206Z         },
2026-06-20T03:13:21.2100313Z         "int": {
2026-06-20T03:13:21.2100422Z           "complete": true,
2026-06-20T03:13:21.2100526Z           "evidence": [
2026-06-20T03:13:21.2100628Z             {
2026-06-20T03:13:21.2100807Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-20T03:13:21.2100914Z               "line": 1034
2026-06-20T03:13:21.2101018Z             },
2026-06-20T03:13:21.2101112Z             {
2026-06-20T03:13:21.2101276Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-20T03:13:21.2101380Z               "line": 1139
2026-06-20T03:13:21.2101489Z             },
2026-06-20T03:13:21.2101591Z             {
2026-06-20T03:13:21.2101766Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-20T03:13:21.2101882Z               "line": 1207
2026-06-20T03:13:21.2101980Z             },
2026-06-20T03:13:21.2102076Z             {
2026-06-20T03:13:21.2102249Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-20T03:13:21.2102357Z               "line": 1300
2026-06-20T03:13:21.2102456Z             }
2026-06-20T03:13:21.2102562Z           ]
2026-06-20T03:13:21.2102650Z         },
2026-06-20T03:13:21.2102754Z         "unit": {
2026-06-20T03:13:21.2102870Z           "complete": true,
2026-06-20T03:13:21.2102969Z           "evidence": [
2026-06-20T03:13:21.2103078Z             {
2026-06-20T03:13:21.2103232Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-20T03:13:21.2103341Z               "line": 270
2026-06-20T03:13:21.2103442Z             },
2026-06-20T03:13:21.2103660Z             {
2026-06-20T03:13:21.2103819Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-20T03:13:21.2104023Z               "line": 350
2026-06-20T03:13:21.2104129Z             },
2026-06-20T03:13:21.2104228Z             {
2026-06-20T03:13:21.2104381Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-20T03:13:21.2104486Z               "line": 381
2026-06-20T03:13:21.2104595Z             },
2026-06-20T03:13:21.2104691Z             {
2026-06-20T03:13:21.2104848Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-20T03:13:21.2104963Z               "line": 411
2026-06-20T03:13:21.2105059Z             },
2026-06-20T03:13:21.2105163Z             {
2026-06-20T03:13:21.2105318Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-20T03:13:21.2105429Z               "line": 440
2026-06-20T03:13:21.2105529Z             },
2026-06-20T03:13:21.2105633Z             {
2026-06-20T03:13:21.2105782Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.2105901Z               "line": 1181
2026-06-20T03:13:21.2106006Z             }
2026-06-20T03:13:21.2106106Z           ]
2026-06-20T03:13:21.2106210Z         }
2026-06-20T03:13:21.2106307Z       }
2026-06-20T03:13:21.2106406Z     },
2026-06-20T03:13:21.2106497Z     {
2026-06-20T03:13:21.2106601Z       "id": "REQ-NET-1",
2026-06-20T03:13:21.2106807Z       "title": "WAN messaging first-class, behind default-on net feature flag",
2026-06-20T03:13:21.2106921Z       "requiredStages": [
2026-06-20T03:13:21.2107022Z         "impl",
2026-06-20T03:13:21.2107121Z         "unit",
2026-06-20T03:13:21.2107226Z         "int"
2026-06-20T03:13:21.2107333Z       ],
2026-06-20T03:13:21.2107436Z       "stages": {
2026-06-20T03:13:21.2107540Z         "doc": {
2026-06-20T03:13:21.2107650Z           "complete": false,
2026-06-20T03:13:21.2107753Z           "evidence": []
2026-06-20T03:13:21.2107843Z         },
2026-06-20T03:13:21.2107943Z         "impl": {
2026-06-20T03:13:21.2108049Z           "complete": true,
2026-06-20T03:13:21.2108162Z           "evidence": [
2026-06-20T03:13:21.2108258Z             {
2026-06-20T03:13:21.2108415Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-20T03:13:21.2108519Z               "line": 54
2026-06-20T03:13:21.2108616Z             },
2026-06-20T03:13:21.2108721Z             {
2026-06-20T03:13:21.2108868Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-20T03:13:21.2109050Z               "line": 594
2026-06-20T03:13:21.2109154Z             },
2026-06-20T03:13:21.2109250Z             {
2026-06-20T03:13:21.2109388Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-20T03:13:21.2109498Z               "line": 130
2026-06-20T03:13:21.2109599Z             },
2026-06-20T03:13:21.2109702Z             {
2026-06-20T03:13:21.2109847Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T03:13:21.2109951Z               "line": 97
2026-06-20T03:13:21.2110056Z             },
2026-06-20T03:13:21.2110156Z             {
2026-06-20T03:13:21.2110303Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T03:13:21.2110412Z               "line": 159
2026-06-20T03:13:21.2110522Z             },
2026-06-20T03:13:21.2110616Z             {
2026-06-20T03:13:21.2110757Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T03:13:21.2110868Z               "line": 175
2026-06-20T03:13:21.2110973Z             },
2026-06-20T03:13:21.2111067Z             {
2026-06-20T03:13:21.2111212Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T03:13:21.2111325Z               "line": 190
2026-06-20T03:13:21.2111420Z             },
2026-06-20T03:13:21.2111522Z             {
2026-06-20T03:13:21.2111663Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T03:13:21.2111774Z               "line": 271
2026-06-20T03:13:21.2111874Z             },
2026-06-20T03:13:21.2111964Z             {
2026-06-20T03:13:21.2112108Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T03:13:21.2112321Z               "line": 306
2026-06-20T03:13:21.2112423Z             },
2026-06-20T03:13:21.2112523Z             {
2026-06-20T03:13:21.2112762Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T03:13:21.2112870Z               "line": 312
2026-06-20T03:13:21.2112969Z             },
2026-06-20T03:13:21.2113074Z             {
2026-06-20T03:13:21.2113215Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T03:13:21.2113324Z               "line": 318
2026-06-20T03:13:21.2113420Z             },
2026-06-20T03:13:21.2113525Z             {
2026-06-20T03:13:21.2113668Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T03:13:21.2113778Z               "line": 334
2026-06-20T03:13:21.2113877Z             },
2026-06-20T03:13:21.2113968Z             {
2026-06-20T03:13:21.2114121Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T03:13:21.2114220Z               "line": 354
2026-06-20T03:13:21.2114336Z             },
2026-06-20T03:13:21.2114440Z             {
2026-06-20T03:13:21.2114574Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-20T03:13:21.2114685Z               "line": 35
2026-06-20T03:13:21.2114783Z             },
2026-06-20T03:13:21.2114883Z             {
2026-06-20T03:13:21.2115028Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-20T03:13:21.2115136Z               "line": 85
2026-06-20T03:13:21.2115237Z             },
2026-06-20T03:13:21.2115338Z             {
2026-06-20T03:13:21.2115475Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T03:13:21.2115581Z               "line": 138
2026-06-20T03:13:21.2115686Z             },
2026-06-20T03:13:21.2115784Z             {
2026-06-20T03:13:21.2115918Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2116028Z               "line": 2953
2026-06-20T03:13:21.2116127Z             },
2026-06-20T03:13:21.2116232Z             {
2026-06-20T03:13:21.2116366Z               "path": "crates/spt/src/wansend.rs",
2026-06-20T03:13:21.2116485Z               "line": 17
2026-06-20T03:13:21.2116576Z             }
2026-06-20T03:13:21.2116676Z           ]
2026-06-20T03:13:21.2116766Z         },
2026-06-20T03:13:21.2116871Z         "int": {
2026-06-20T03:13:21.2116990Z           "complete": true,
2026-06-20T03:13:21.2117095Z           "evidence": [
2026-06-20T03:13:21.2117201Z             {
2026-06-20T03:13:21.2117357Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-20T03:13:21.2117467Z               "line": 341
2026-06-20T03:13:21.2117578Z             },
2026-06-20T03:13:21.2117676Z             {
2026-06-20T03:13:21.2117825Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T03:13:21.2117930Z               "line": 675
2026-06-20T03:13:21.2118029Z             },
2026-06-20T03:13:21.2118133Z             {
2026-06-20T03:13:21.2118271Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T03:13:21.2118389Z               "line": 973
2026-06-20T03:13:21.2118489Z             }
2026-06-20T03:13:21.2118600Z           ]
2026-06-20T03:13:21.2118699Z         },
2026-06-20T03:13:21.2118804Z         "unit": {
2026-06-20T03:13:21.2118914Z           "complete": true,
2026-06-20T03:13:21.2119162Z           "evidence": [
2026-06-20T03:13:21.2119309Z             {
2026-06-20T03:13:21.2119533Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-20T03:13:21.2119657Z               "line": 651
2026-06-20T03:13:21.2119801Z             },
2026-06-20T03:13:21.2119920Z             {
2026-06-20T03:13:21.2120068Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-20T03:13:21.2120168Z               "line": 686
2026-06-20T03:13:21.2120272Z             },
2026-06-20T03:13:21.2120407Z             {
2026-06-20T03:13:21.2120635Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-20T03:13:21.2120892Z               "line": 940
2026-06-20T03:13:21.2121034Z             },
2026-06-20T03:13:21.2121185Z             {
2026-06-20T03:13:21.2121400Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-20T03:13:21.2121762Z               "line": 201
2026-06-20T03:13:21.2121928Z             },
2026-06-20T03:13:21.2122229Z             {
2026-06-20T03:13:21.2122463Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T03:13:21.2122639Z               "line": 442
2026-06-20T03:13:21.2122801Z             },
2026-06-20T03:13:21.2122959Z             {
2026-06-20T03:13:21.2123197Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T03:13:21.2123374Z               "line": 456
2026-06-20T03:13:21.2123543Z             },
2026-06-20T03:13:21.2123705Z             {
2026-06-20T03:13:21.2123947Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T03:13:21.2124133Z               "line": 475
2026-06-20T03:13:21.2124281Z             },
2026-06-20T03:13:21.2124452Z             {
2026-06-20T03:13:21.2124677Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-20T03:13:21.2124925Z               "line": 120
2026-06-20T03:13:21.2125101Z             },
2026-06-20T03:13:21.2125273Z             {
2026-06-20T03:13:21.2125511Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-20T03:13:21.2125696Z               "line": 163
2026-06-20T03:13:21.2125870Z             },
2026-06-20T03:13:21.2126025Z             {
2026-06-20T03:13:21.2126270Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T03:13:21.2126444Z               "line": 530
2026-06-20T03:13:21.2126608Z             },
2026-06-20T03:13:21.2126777Z             {
2026-06-20T03:13:21.2127011Z               "path": "crates/spt/src/wansend.rs",
2026-06-20T03:13:21.2127189Z               "line": 616
2026-06-20T03:13:21.2127345Z             },
2026-06-20T03:13:21.2127523Z             {
2026-06-20T03:13:21.2127736Z               "path": "crates/spt/src/wansend.rs",
2026-06-20T03:13:21.2127913Z               "line": 1006
2026-06-20T03:13:21.2128086Z             }
2026-06-20T03:13:21.2128241Z           ]
2026-06-20T03:13:21.2128405Z         }
2026-06-20T03:13:21.2128561Z       }
2026-06-20T03:13:21.2128727Z     },
2026-06-20T03:13:21.2128887Z     {
2026-06-20T03:13:21.2129136Z       "id": "REQ-NET-2",
2026-06-20T03:13:21.2129488Z       "title": "n0 relay default + self-host knob + plain-language disclosure",
2026-06-20T03:13:21.2129669Z       "requiredStages": [
2026-06-20T03:13:21.2129832Z         "impl"
2026-06-20T03:13:21.2129989Z       ],
2026-06-20T03:13:21.2130161Z       "stages": {
2026-06-20T03:13:21.2130318Z         "doc": {
2026-06-20T03:13:21.2130508Z           "complete": false,
2026-06-20T03:13:21.2130686Z           "evidence": []
2026-06-20T03:13:21.2130837Z         },
2026-06-20T03:13:21.2131006Z         "impl": {
2026-06-20T03:13:21.2131181Z           "complete": true,
2026-06-20T03:13:21.2131358Z           "evidence": [
2026-06-20T03:13:21.2131527Z             {
2026-06-20T03:13:21.2131768Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-20T03:13:21.2131945Z               "line": 57
2026-06-20T03:13:21.2132102Z             },
2026-06-20T03:13:21.2132270Z             {
2026-06-20T03:13:21.2132502Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T03:13:21.2132689Z               "line": 71
2026-06-20T03:13:21.2132856Z             },
2026-06-20T03:13:21.2133008Z             {
2026-06-20T03:13:21.2133257Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T03:13:21.2133433Z               "line": 81
2026-06-20T03:13:21.2133596Z             },
2026-06-20T03:13:21.2133748Z             {
2026-06-20T03:13:21.2133990Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T03:13:21.2134170Z               "line": 159
2026-06-20T03:13:21.2134331Z             },
2026-06-20T03:13:21.2134493Z             {
2026-06-20T03:13:21.2134730Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T03:13:21.2134941Z               "line": 175
2026-06-20T03:13:21.2135103Z             },
2026-06-20T03:13:21.2135270Z             {
2026-06-20T03:13:21.2135509Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T03:13:21.2135847Z               "line": 190
2026-06-20T03:13:21.2136028Z             }
2026-06-20T03:13:21.2136468Z           ]
2026-06-20T03:13:21.2136639Z         },
2026-06-20T03:13:21.2136797Z         "int": {
2026-06-20T03:13:21.2136990Z           "complete": false,
2026-06-20T03:13:21.2137191Z           "evidence": []
2026-06-20T03:13:21.2137347Z         },
2026-06-20T03:13:21.2137520Z         "unit": {
2026-06-20T03:13:21.2137706Z           "complete": true,
2026-06-20T03:13:21.2137887Z           "evidence": [
2026-06-20T03:13:21.2138045Z             {
2026-06-20T03:13:21.2138287Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-20T03:13:21.2138459Z               "line": 402
2026-06-20T03:13:21.2138617Z             }
2026-06-20T03:13:21.2138774Z           ]
2026-06-20T03:13:21.2138931Z         }
2026-06-20T03:13:21.2139187Z       }
2026-06-20T03:13:21.2139345Z     },
2026-06-20T03:13:21.2139509Z     {
2026-06-20T03:13:21.2139677Z       "id": "REQ-NET-3",
2026-06-20T03:13:21.2140015Z       "title": "Cross-node Psyche sync over P2P replaces gh-repo-sync",
2026-06-20T03:13:21.2140210Z       "requiredStages": [
2026-06-20T03:13:21.2140377Z         "impl",
2026-06-20T03:13:21.2140554Z         "unit"
2026-06-20T03:13:21.2140706Z       ],
2026-06-20T03:13:21.2140878Z       "stages": {
2026-06-20T03:13:21.2141045Z         "doc": {
2026-06-20T03:13:21.2141222Z           "complete": false,
2026-06-20T03:13:21.2141393Z           "evidence": []
2026-06-20T03:13:21.2141551Z         },
2026-06-20T03:13:21.2141727Z         "impl": {
2026-06-20T03:13:21.2141904Z           "complete": true,
2026-06-20T03:13:21.2142083Z           "evidence": [
2026-06-20T03:13:21.2142250Z             {
2026-06-20T03:13:21.2142472Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T03:13:21.2142644Z               "line": 39
2026-06-20T03:13:21.2142796Z             },
2026-06-20T03:13:21.2142954Z             {
2026-06-20T03:13:21.2143179Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T03:13:21.2143368Z               "line": 182
2026-06-20T03:13:21.2143540Z             },
2026-06-20T03:13:21.2143707Z             {
2026-06-20T03:13:21.2143921Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T03:13:21.2144085Z               "line": 333
2026-06-20T03:13:21.2144250Z             },
2026-06-20T03:13:21.2144414Z             {
2026-06-20T03:13:21.2144650Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-20T03:13:21.2144849Z               "line": 36
2026-06-20T03:13:21.2145004Z             },
2026-06-20T03:13:21.2145169Z             {
2026-06-20T03:13:21.2145416Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T03:13:21.2145596Z               "line": 158
2026-06-20T03:13:21.2145759Z             },
2026-06-20T03:13:21.2145930Z             {
2026-06-20T03:13:21.2146178Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T03:13:21.2146336Z               "line": 238
2026-06-20T03:13:21.2146503Z             },
2026-06-20T03:13:21.2146661Z             {
2026-06-20T03:13:21.2146903Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T03:13:21.2147089Z               "line": 259
2026-06-20T03:13:21.2147262Z             },
2026-06-20T03:13:21.2147436Z             {
2026-06-20T03:13:21.2147680Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T03:13:21.2147864Z               "line": 317
2026-06-20T03:13:21.2148023Z             },
2026-06-20T03:13:21.2148184Z             {
2026-06-20T03:13:21.2148414Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T03:13:21.2148596Z               "line": 336
2026-06-20T03:13:21.2148771Z             },
2026-06-20T03:13:21.2148916Z             {
2026-06-20T03:13:21.2149254Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T03:13:21.2149429Z               "line": 374
2026-06-20T03:13:21.2149602Z             },
2026-06-20T03:13:21.2149767Z             {
2026-06-20T03:13:21.2150013Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T03:13:21.2150366Z               "line": 419
2026-06-20T03:13:21.2150666Z             },
2026-06-20T03:13:21.2150833Z             {
2026-06-20T03:13:21.2151080Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T03:13:21.2151257Z               "line": 432
2026-06-20T03:13:21.2151424Z             },
2026-06-20T03:13:21.2151572Z             {
2026-06-20T03:13:21.2151825Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-20T03:13:21.2151996Z               "line": 29
2026-06-20T03:13:21.2152159Z             },
2026-06-20T03:13:21.2152325Z             {
2026-06-20T03:13:21.2152568Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-20T03:13:21.2152744Z               "line": 72
2026-06-20T03:13:21.2152904Z             },
2026-06-20T03:13:21.2153066Z             {
2026-06-20T03:13:21.2153299Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-20T03:13:21.2153481Z               "line": 123
2026-06-20T03:13:21.2153657Z             }
2026-06-20T03:13:21.2153829Z           ]
2026-06-20T03:13:21.2153995Z         },
2026-06-20T03:13:21.2154152Z         "int": {
2026-06-20T03:13:21.2154335Z           "complete": false,
2026-06-20T03:13:21.2154515Z           "evidence": []
2026-06-20T03:13:21.2154688Z         },
2026-06-20T03:13:21.2154863Z         "unit": {
2026-06-20T03:13:21.2155055Z           "complete": true,
2026-06-20T03:13:21.2155243Z           "evidence": [
2026-06-20T03:13:21.2155391Z             {
2026-06-20T03:13:21.2155632Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-20T03:13:21.2155804Z               "line": 223
2026-06-20T03:13:21.2155977Z             },
2026-06-20T03:13:21.2156132Z             {
2026-06-20T03:13:21.2156376Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-20T03:13:21.2156563Z               "line": 351
2026-06-20T03:13:21.2156714Z             },
2026-06-20T03:13:21.2156872Z             {
2026-06-20T03:13:21.2157105Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-20T03:13:21.2157293Z               "line": 504
2026-06-20T03:13:21.2157444Z             },
2026-06-20T03:13:21.2157608Z             {
2026-06-20T03:13:21.2157851Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-20T03:13:21.2158025Z               "line": 93
2026-06-20T03:13:21.2158192Z             },
2026-06-20T03:13:21.2158344Z             {
2026-06-20T03:13:21.2158579Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-20T03:13:21.2158745Z               "line": 142
2026-06-20T03:13:21.2158917Z             },
2026-06-20T03:13:21.2159156Z             {
2026-06-20T03:13:21.2159384Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-20T03:13:21.2159570Z               "line": 315
2026-06-20T03:13:21.2159732Z             },
2026-06-20T03:13:21.2159894Z             {
2026-06-20T03:13:21.2160129Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-20T03:13:21.2160308Z               "line": 355
2026-06-20T03:13:21.2160484Z             },
2026-06-20T03:13:21.2160644Z             {
2026-06-20T03:13:21.2160887Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-20T03:13:21.2161069Z               "line": 494
2026-06-20T03:13:21.2161221Z             }
2026-06-20T03:13:21.2161374Z           ]
2026-06-20T03:13:21.2161540Z         }
2026-06-20T03:13:21.2161709Z       }
2026-06-20T03:13:21.2161865Z     },
2026-06-20T03:13:21.2162033Z     {
2026-06-20T03:13:21.2162227Z       "id": "REQ-NODE-IDENTITY",
2026-06-20T03:13:21.2162682Z       "title": "Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex",
2026-06-20T03:13:21.2162866Z       "requiredStages": [
2026-06-20T03:13:21.2163020Z         "impl",
2026-06-20T03:13:21.2163194Z         "unit"
2026-06-20T03:13:21.2163356Z       ],
2026-06-20T03:13:21.2163530Z       "stages": {
2026-06-20T03:13:21.2163689Z         "doc": {
2026-06-20T03:13:21.2163888Z           "complete": false,
2026-06-20T03:13:21.2164055Z           "evidence": []
2026-06-20T03:13:21.2164375Z         },
2026-06-20T03:13:21.2164546Z         "impl": {
2026-06-20T03:13:21.2164718Z           "complete": true,
2026-06-20T03:13:21.2165046Z           "evidence": [
2026-06-20T03:13:21.2165200Z             {
2026-06-20T03:13:21.2165447Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-20T03:13:21.2165620Z               "line": 60
2026-06-20T03:13:21.2165784Z             },
2026-06-20T03:13:21.2165951Z             {
2026-06-20T03:13:21.2166188Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-20T03:13:21.2166369Z               "line": 68
2026-06-20T03:13:21.2166532Z             },
2026-06-20T03:13:21.2166702Z             {
2026-06-20T03:13:21.2166927Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-20T03:13:21.2167103Z               "line": 86
2026-06-20T03:13:21.2167265Z             },
2026-06-20T03:13:21.2167427Z             {
2026-06-20T03:13:21.2167675Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-20T03:13:21.2167857Z               "line": 120
2026-06-20T03:13:21.2168019Z             },
2026-06-20T03:13:21.2168191Z             {
2026-06-20T03:13:21.2168435Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-20T03:13:21.2168609Z               "line": 127
2026-06-20T03:13:21.2168771Z             },
2026-06-20T03:13:21.2169004Z             {
2026-06-20T03:13:21.2169243Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-20T03:13:21.2169430Z               "line": 143
2026-06-20T03:13:21.2169605Z             },
2026-06-20T03:13:21.2169750Z             {
2026-06-20T03:13:21.2169973Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-20T03:13:21.2170144Z               "line": 16
2026-06-20T03:13:21.2170307Z             }
2026-06-20T03:13:21.2170454Z           ]
2026-06-20T03:13:21.2170612Z         },
2026-06-20T03:13:21.2170788Z         "int": {
2026-06-20T03:13:21.2170959Z           "complete": false,
2026-06-20T03:13:21.2171142Z           "evidence": []
2026-06-20T03:13:21.2171300Z         },
2026-06-20T03:13:21.2171476Z         "unit": {
2026-06-20T03:13:21.2171658Z           "complete": true,
2026-06-20T03:13:21.2171833Z           "evidence": [
2026-06-20T03:13:21.2177411Z             {
2026-06-20T03:13:21.2177712Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-20T03:13:21.2177897Z               "line": 199
2026-06-20T03:13:21.2178055Z             },
2026-06-20T03:13:21.2178231Z             {
2026-06-20T03:13:21.2178469Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-20T03:13:21.2178652Z               "line": 218
2026-06-20T03:13:21.2178831Z             },
2026-06-20T03:13:21.2179075Z             {
2026-06-20T03:13:21.2179322Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-20T03:13:21.2179517Z               "line": 234
2026-06-20T03:13:21.2179685Z             },
2026-06-20T03:13:21.2179836Z             {
2026-06-20T03:13:21.2180090Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-20T03:13:21.2180262Z               "line": 256
2026-06-20T03:13:21.2180438Z             },
2026-06-20T03:13:21.2180601Z             {
2026-06-20T03:13:21.2180833Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-20T03:13:21.2181010Z               "line": 124
2026-06-20T03:13:21.2181172Z             },
2026-06-20T03:13:21.2181339Z             {
2026-06-20T03:13:21.2181557Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-20T03:13:21.2181721Z               "line": 140
2026-06-20T03:13:21.2181893Z             },
2026-06-20T03:13:21.2182055Z             {
2026-06-20T03:13:21.2182275Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-20T03:13:21.2182432Z               "line": 155
2026-06-20T03:13:21.2182595Z             }
2026-06-20T03:13:21.2182746Z           ]
2026-06-20T03:13:21.2182900Z         }
2026-06-20T03:13:21.2183056Z       }
2026-06-20T03:13:21.2183210Z     },
2026-06-20T03:13:21.2183371Z     {
2026-06-20T03:13:21.2183544Z       "id": "REQ-NOTIF-1",
2026-06-20T03:13:21.2184225Z       "title": "Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts",
2026-06-20T03:13:21.2184723Z       "requiredStages": [
2026-06-20T03:13:21.2184890Z         "impl",
2026-06-20T03:13:21.2185061Z         "unit",
2026-06-20T03:13:21.2185223Z         "int"
2026-06-20T03:13:21.2185376Z       ],
2026-06-20T03:13:21.2185538Z       "stages": {
2026-06-20T03:13:21.2185705Z         "doc": {
2026-06-20T03:13:21.2185886Z           "complete": false,
2026-06-20T03:13:21.2186064Z           "evidence": []
2026-06-20T03:13:21.2186224Z         },
2026-06-20T03:13:21.2186393Z         "impl": {
2026-06-20T03:13:21.2186582Z           "complete": true,
2026-06-20T03:13:21.2186759Z           "evidence": [
2026-06-20T03:13:21.2186924Z             {
2026-06-20T03:13:21.2187175Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-20T03:13:21.2187352Z               "line": 514
2026-06-20T03:13:21.2187523Z             },
2026-06-20T03:13:21.2187676Z             {
2026-06-20T03:13:21.2187914Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T03:13:21.2188086Z               "line": 30
2026-06-20T03:13:21.2188243Z             },
2026-06-20T03:13:21.2188405Z             {
2026-06-20T03:13:21.2188630Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T03:13:21.2188810Z               "line": 69
2026-06-20T03:13:21.2189135Z             },
2026-06-20T03:13:21.2189302Z             {
2026-06-20T03:13:21.2189565Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T03:13:21.2189744Z               "line": 93
2026-06-20T03:13:21.2189906Z             },
2026-06-20T03:13:21.2190068Z             {
2026-06-20T03:13:21.2190312Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T03:13:21.2190493Z               "line": 107
2026-06-20T03:13:21.2190669Z             },
2026-06-20T03:13:21.2190856Z             {
2026-06-20T03:13:21.2191078Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T03:13:21.2191265Z               "line": 142
2026-06-20T03:13:21.2191418Z             },
2026-06-20T03:13:21.2191580Z             {
2026-06-20T03:13:21.2191810Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T03:13:21.2191988Z               "line": 187
2026-06-20T03:13:21.2192170Z             },
2026-06-20T03:13:21.2192339Z             {
2026-06-20T03:13:21.2192578Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T03:13:21.2192750Z               "line": 258
2026-06-20T03:13:21.2192921Z             },
2026-06-20T03:13:21.2193084Z             {
2026-06-20T03:13:21.2193321Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T03:13:21.2193512Z               "line": 372
2026-06-20T03:13:21.2193674Z             },
2026-06-20T03:13:21.2193841Z             {
2026-06-20T03:13:21.2194066Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T03:13:21.2194256Z               "line": 479
2026-06-20T03:13:21.2194405Z             },
2026-06-20T03:13:21.2194575Z             {
2026-06-20T03:13:21.2194828Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-20T03:13:21.2195004Z               "line": 24
2026-06-20T03:13:21.2207436Z             },
2026-06-20T03:13:21.2207650Z             {
2026-06-20T03:13:21.2207903Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-20T03:13:21.2208078Z               "line": 34
2026-06-20T03:13:21.2208239Z             },
2026-06-20T03:13:21.2208395Z             {
2026-06-20T03:13:21.2208633Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-20T03:13:21.2208816Z               "line": 60
2026-06-20T03:13:21.2209068Z             },
2026-06-20T03:13:21.2209244Z             {
2026-06-20T03:13:21.2209488Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-20T03:13:21.2209668Z               "line": 82
2026-06-20T03:13:21.2209830Z             },
2026-06-20T03:13:21.2209993Z             {
2026-06-20T03:13:21.2210217Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-20T03:13:21.2210569Z               "line": 94
2026-06-20T03:13:21.2210742Z             },
2026-06-20T03:13:21.2210897Z             {
2026-06-20T03:13:21.2211313Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-20T03:13:21.2211484Z               "line": 96
2026-06-20T03:13:21.2211642Z             },
2026-06-20T03:13:21.2211794Z             {
2026-06-20T03:13:21.2212028Z               "path": "crates/spt-daemon/src/pump/notif.rs",
2026-06-20T03:13:21.2212195Z               "line": 44
2026-06-20T03:13:21.2212353Z             },
2026-06-20T03:13:21.2212514Z             {
2026-06-20T03:13:21.2212762Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-20T03:13:21.2212930Z               "line": 20
2026-06-20T03:13:21.2213095Z             },
2026-06-20T03:13:21.2213252Z             {
2026-06-20T03:13:21.2213487Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-20T03:13:21.2213670Z               "line": 30
2026-06-20T03:13:21.2213822Z             },
2026-06-20T03:13:21.2213990Z             {
2026-06-20T03:13:21.2214214Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-20T03:13:21.2214399Z               "line": 50
2026-06-20T03:13:21.2214543Z             },
2026-06-20T03:13:21.2214694Z             {
2026-06-20T03:13:21.2214923Z               "path": "crates/spt-store/src/notif.rs",
2026-06-20T03:13:21.2215081Z               "line": 28
2026-06-20T03:13:21.2215243Z             },
2026-06-20T03:13:21.2215396Z             {
2026-06-20T03:13:21.2215619Z               "path": "crates/spt-store/src/notif.rs",
2026-06-20T03:13:21.2215783Z               "line": 126
2026-06-20T03:13:21.2215943Z             },
2026-06-20T03:13:21.2216100Z             {
2026-06-20T03:13:21.2216317Z               "path": "crates/spt-store/src/notif.rs",
2026-06-20T03:13:21.2216494Z               "line": 161
2026-06-20T03:13:21.2216656Z             },
2026-06-20T03:13:21.2216804Z             {
2026-06-20T03:13:21.2217023Z               "path": "crates/spt-store/src/notif.rs",
2026-06-20T03:13:21.2217209Z               "line": 202
2026-06-20T03:13:21.2217381Z             },
2026-06-20T03:13:21.2217543Z             {
2026-06-20T03:13:21.2217777Z               "path": "crates/spt-store/src/notif.rs",
2026-06-20T03:13:21.2217948Z               "line": 213
2026-06-20T03:13:21.2218115Z             },
2026-06-20T03:13:21.2218272Z             {
2026-06-20T03:13:21.2218486Z               "path": "crates/spt-store/src/notif.rs",
2026-06-20T03:13:21.2218667Z               "line": 238
2026-06-20T03:13:21.2218817Z             },
2026-06-20T03:13:21.2219066Z             {
2026-06-20T03:13:21.2219289Z               "path": "crates/spt-store/src/notif.rs",
2026-06-20T03:13:21.2219494Z               "line": 261
2026-06-20T03:13:21.2219643Z             },
2026-06-20T03:13:21.2219804Z             {
2026-06-20T03:13:21.2220048Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.2220210Z               "line": 86
2026-06-20T03:13:21.2220367Z             }
2026-06-20T03:13:21.2220515Z           ]
2026-06-20T03:13:21.2220691Z         },
2026-06-20T03:13:21.2220844Z         "int": {
2026-06-20T03:13:21.2221025Z           "complete": true,
2026-06-20T03:13:21.2221207Z           "evidence": [
2026-06-20T03:13:21.2221363Z             {
2026-06-20T03:13:21.2221612Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-20T03:13:21.2221782Z               "line": 285
2026-06-20T03:13:21.2221950Z             },
2026-06-20T03:13:21.2222091Z             {
2026-06-20T03:13:21.2222322Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-20T03:13:21.2222503Z               "line": 145
2026-06-20T03:13:21.2222665Z             },
2026-06-20T03:13:21.2222813Z             {
2026-06-20T03:13:21.2223050Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T03:13:21.2223228Z               "line": 684
2026-06-20T03:13:21.2223389Z             },
2026-06-20T03:13:21.2223547Z             {
2026-06-20T03:13:21.2223784Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T03:13:21.2224111Z               "line": 1102
2026-06-20T03:13:21.2224264Z             }
2026-06-20T03:13:21.2224555Z           ]
2026-06-20T03:13:21.2224716Z         },
2026-06-20T03:13:21.2224879Z         "unit": {
2026-06-20T03:13:21.2225060Z           "complete": true,
2026-06-20T03:13:21.2225236Z           "evidence": [
2026-06-20T03:13:21.2225389Z             {
2026-06-20T03:13:21.2225627Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T03:13:21.2225794Z               "line": 572
2026-06-20T03:13:21.2225961Z             },
2026-06-20T03:13:21.2226128Z             {
2026-06-20T03:13:21.2226348Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T03:13:21.2226527Z               "line": 636
2026-06-20T03:13:21.2226689Z             },
2026-06-20T03:13:21.2226854Z             {
2026-06-20T03:13:21.2227074Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T03:13:21.2227258Z               "line": 740
2026-06-20T03:13:21.2227417Z             },
2026-06-20T03:13:21.2227583Z             {
2026-06-20T03:13:21.2227812Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T03:13:21.2227985Z               "line": 772
2026-06-20T03:13:21.2228141Z             },
2026-06-20T03:13:21.2228300Z             {
2026-06-20T03:13:21.2228523Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T03:13:21.2228703Z               "line": 840
2026-06-20T03:13:21.2228867Z             },
2026-06-20T03:13:21.2229141Z             {
2026-06-20T03:13:21.2229363Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T03:13:21.2229559Z               "line": 898
2026-06-20T03:13:21.2229716Z             },
2026-06-20T03:13:21.2229874Z             {
2026-06-20T03:13:21.2230102Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T03:13:21.2230293Z               "line": 1173
2026-06-20T03:13:21.2230460Z             },
2026-06-20T03:13:21.2230612Z             {
2026-06-20T03:13:21.2230857Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-20T03:13:21.2231042Z               "line": 157
2026-06-20T03:13:21.2231218Z             },
2026-06-20T03:13:21.2231477Z             {
2026-06-20T03:13:21.2231705Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-20T03:13:21.2231881Z               "line": 250
2026-06-20T03:13:21.2232041Z             },
2026-06-20T03:13:21.2232205Z             {
2026-06-20T03:13:21.2232433Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-20T03:13:21.2232609Z               "line": 273
2026-06-20T03:13:21.2232777Z             },
2026-06-20T03:13:21.2232924Z             {
2026-06-20T03:13:21.2233168Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-20T03:13:21.2233344Z               "line": 355
2026-06-20T03:13:21.2233506Z             },
2026-06-20T03:13:21.2233659Z             {
2026-06-20T03:13:21.2233897Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-20T03:13:21.2234070Z               "line": 392
2026-06-20T03:13:21.2234220Z             },
2026-06-20T03:13:21.2234391Z             {
2026-06-20T03:13:21.2234637Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-20T03:13:21.2234828Z               "line": 131
2026-06-20T03:13:21.2234996Z             },
2026-06-20T03:13:21.2235153Z             {
2026-06-20T03:13:21.2235391Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-20T03:13:21.2235557Z               "line": 72
2026-06-20T03:13:21.2235725Z             },
2026-06-20T03:13:21.2235872Z             {
2026-06-20T03:13:21.2236106Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-20T03:13:21.2236283Z               "line": 97
2026-06-20T03:13:21.2236445Z             },
2026-06-20T03:13:21.2236617Z             {
2026-06-20T03:13:21.2236826Z               "path": "crates/spt-store/src/notif.rs",
2026-06-20T03:13:21.2237008Z               "line": 379
2026-06-20T03:13:21.2237163Z             },
2026-06-20T03:13:21.2237320Z             {
2026-06-20T03:13:21.2237553Z               "path": "crates/spt-store/src/notif.rs",
2026-06-20T03:13:21.2237887Z               "line": 417
2026-06-20T03:13:21.2238053Z             },
2026-06-20T03:13:21.2238335Z             {
2026-06-20T03:13:21.2238578Z               "path": "crates/spt-store/src/notif.rs",
2026-06-20T03:13:21.2238778Z               "line": 433
2026-06-20T03:13:21.2239035Z             },
2026-06-20T03:13:21.2239189Z             {
2026-06-20T03:13:21.2239408Z               "path": "crates/spt-store/src/notif.rs",
2026-06-20T03:13:21.2239598Z               "line": 472
2026-06-20T03:13:21.2239769Z             },
2026-06-20T03:13:21.2239933Z             {
2026-06-20T03:13:21.2240133Z               "path": "crates/spt-store/src/notif.rs",
2026-06-20T03:13:21.2240300Z               "line": 489
2026-06-20T03:13:21.2240459Z             },
2026-06-20T03:13:21.2240624Z             {
2026-06-20T03:13:21.2240839Z               "path": "crates/spt-store/src/notif.rs",
2026-06-20T03:13:21.2241001Z               "line": 517
2026-06-20T03:13:21.2241163Z             },
2026-06-20T03:13:21.2241325Z             {
2026-06-20T03:13:21.2241541Z               "path": "crates/spt-store/src/notif.rs",
2026-06-20T03:13:21.2241708Z               "line": 548
2026-06-20T03:13:21.2241869Z             },
2026-06-20T03:13:21.2242018Z             {
2026-06-20T03:13:21.2242246Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.2242423Z               "line": 745
2026-06-20T03:13:21.2242569Z             }
2026-06-20T03:13:21.2242732Z           ]
2026-06-20T03:13:21.2242898Z         }
2026-06-20T03:13:21.2243051Z       }
2026-06-20T03:13:21.2243203Z     },
2026-06-20T03:13:21.2243343Z     {
2026-06-20T03:13:21.2243522Z       "id": "REQ-NOTIF-2",
2026-06-20T03:13:21.2244019Z       "title": "spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)",
2026-06-20T03:13:21.2244199Z       "requiredStages": [
2026-06-20T03:13:21.2244371Z         "doc",
2026-06-20T03:13:21.2244533Z         "impl",
2026-06-20T03:13:21.2244700Z         "unit",
2026-06-20T03:13:21.2244851Z         "int"
2026-06-20T03:13:21.2245008Z       ],
2026-06-20T03:13:21.2245183Z       "stages": {
2026-06-20T03:13:21.2245351Z         "doc": {
2026-06-20T03:13:21.2245531Z           "complete": true,
2026-06-20T03:13:21.2245708Z           "evidence": [
2026-06-20T03:13:21.2245866Z             {
2026-06-20T03:13:21.2246051Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.2246224Z               "line": 509
2026-06-20T03:13:21.2246375Z             },
2026-06-20T03:13:21.2246539Z             {
2026-06-20T03:13:21.2246742Z               "path": "docs/MANIFEST.md",
2026-06-20T03:13:21.2246910Z               "line": 123
2026-06-20T03:13:21.2247076Z             }
2026-06-20T03:13:21.2247234Z           ]
2026-06-20T03:13:21.2247386Z         },
2026-06-20T03:13:21.2247540Z         "impl": {
2026-06-20T03:13:21.2247714Z           "complete": true,
2026-06-20T03:13:21.2247885Z           "evidence": [
2026-06-20T03:13:21.2248036Z             {
2026-06-20T03:13:21.2248270Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T03:13:21.2248447Z               "line": 287
2026-06-20T03:13:21.2248627Z             },
2026-06-20T03:13:21.2248785Z             {
2026-06-20T03:13:21.2249100Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T03:13:21.2249262Z               "line": 301
2026-06-20T03:13:21.2249410Z             },
2026-06-20T03:13:21.2249567Z             {
2026-06-20T03:13:21.2249787Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T03:13:21.2249963Z               "line": 326
2026-06-20T03:13:21.2250121Z             },
2026-06-20T03:13:21.2250281Z             {
2026-06-20T03:13:21.2250527Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.2250689Z               "line": 239
2026-06-20T03:13:21.2250856Z             },
2026-06-20T03:13:21.2251028Z             {
2026-06-20T03:13:21.2251261Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.2251447Z               "line": 95
2026-06-20T03:13:21.2251786Z             },
2026-06-20T03:13:21.2251953Z             {
2026-06-20T03:13:21.2252157Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2252463Z               "line": 2225
2026-06-20T03:13:21.2252621Z             },
2026-06-20T03:13:21.2252778Z             {
2026-06-20T03:13:21.2252983Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2253153Z               "line": 2274
2026-06-20T03:13:21.2253326Z             },
2026-06-20T03:13:21.2253482Z             {
2026-06-20T03:13:21.2253679Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2253845Z               "line": 2353
2026-06-20T03:13:21.2254003Z             },
2026-06-20T03:13:21.2254169Z             {
2026-06-20T03:13:21.2254360Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2254537Z               "line": 2392
2026-06-20T03:13:21.2254688Z             }
2026-06-20T03:13:21.2254856Z           ]
2026-06-20T03:13:21.2255008Z         },
2026-06-20T03:13:21.2255195Z         "int": {
2026-06-20T03:13:21.2255388Z           "complete": true,
2026-06-20T03:13:21.2255550Z           "evidence": [
2026-06-20T03:13:21.2255710Z             {
2026-06-20T03:13:21.2255934Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T03:13:21.2256111Z               "line": 810
2026-06-20T03:13:21.2256263Z             },
2026-06-20T03:13:21.2256431Z             {
2026-06-20T03:13:21.2256668Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T03:13:21.2256836Z               "line": 1345
2026-06-20T03:13:21.2257007Z             }
2026-06-20T03:13:21.2257160Z           ]
2026-06-20T03:13:21.2257326Z         },
2026-06-20T03:13:21.2257493Z         "unit": {
2026-06-20T03:13:21.2257671Z           "complete": true,
2026-06-20T03:13:21.2257860Z           "evidence": [
2026-06-20T03:13:21.2258019Z             {
2026-06-20T03:13:21.2258255Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T03:13:21.2258422Z               "line": 1022
2026-06-20T03:13:21.2258591Z             },
2026-06-20T03:13:21.2258750Z             {
2026-06-20T03:13:21.2259055Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T03:13:21.2259239Z               "line": 1090
2026-06-20T03:13:21.2259398Z             },
2026-06-20T03:13:21.2259559Z             {
2026-06-20T03:13:21.2259755Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2259927Z               "line": 8210
2026-06-20T03:13:21.2260084Z             },
2026-06-20T03:13:21.2260242Z             {
2026-06-20T03:13:21.2260441Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2260606Z               "line": 8265
2026-06-20T03:13:21.2260765Z             }
2026-06-20T03:13:21.2260923Z           ]
2026-06-20T03:13:21.2261082Z         }
2026-06-20T03:13:21.2261240Z       }
2026-06-20T03:13:21.2261397Z     },
2026-06-20T03:13:21.2261555Z     {
2026-06-20T03:13:21.2261730Z       "id": "REQ-PAIR-1",
2026-06-20T03:13:21.2261941Z       "title": "TOTP-seeded SPAKE2 pairing",
2026-06-20T03:13:21.2262126Z       "requiredStages": [
2026-06-20T03:13:21.2262279Z         "impl",
2026-06-20T03:13:21.2262446Z         "unit",
2026-06-20T03:13:21.2262618Z         "int"
2026-06-20T03:13:21.2262775Z       ],
2026-06-20T03:13:21.2262937Z       "stages": {
2026-06-20T03:13:21.2263105Z         "doc": {
2026-06-20T03:13:21.2263285Z           "complete": false,
2026-06-20T03:13:21.2263458Z           "evidence": []
2026-06-20T03:13:21.2263609Z         },
2026-06-20T03:13:21.2263785Z         "impl": {
2026-06-20T03:13:21.2263971Z           "complete": true,
2026-06-20T03:13:21.2264148Z           "evidence": [
2026-06-20T03:13:21.2264314Z             {
2026-06-20T03:13:21.2264563Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T03:13:21.2264734Z               "line": 27
2026-06-20T03:13:21.2264881Z             },
2026-06-20T03:13:21.2265049Z             {
2026-06-20T03:13:21.2265310Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T03:13:21.2265474Z               "line": 88
2026-06-20T03:13:21.2265825Z             },
2026-06-20T03:13:21.2266015Z             {
2026-06-20T03:13:21.2266414Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T03:13:21.2266590Z               "line": 110
2026-06-20T03:13:21.2266752Z             },
2026-06-20T03:13:21.2266919Z             {
2026-06-20T03:13:21.2267167Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T03:13:21.2267335Z               "line": 153
2026-06-20T03:13:21.2267491Z             },
2026-06-20T03:13:21.2267654Z             {
2026-06-20T03:13:21.2267896Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T03:13:21.2268096Z               "line": 182
2026-06-20T03:13:21.2268308Z             },
2026-06-20T03:13:21.2268455Z             {
2026-06-20T03:13:21.2268707Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-20T03:13:21.2268883Z               "line": 29
2026-06-20T03:13:21.2269228Z             },
2026-06-20T03:13:21.2269452Z             {
2026-06-20T03:13:21.2269747Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-20T03:13:21.2269930Z               "line": 31
2026-06-20T03:13:21.2270091Z             },
2026-06-20T03:13:21.2270259Z             {
2026-06-20T03:13:21.2270512Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T03:13:21.2270683Z               "line": 44
2026-06-20T03:13:21.2270846Z             },
2026-06-20T03:13:21.2271021Z             {
2026-06-20T03:13:21.2271259Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T03:13:21.2271440Z               "line": 171
2026-06-20T03:13:21.2271595Z             },
2026-06-20T03:13:21.2271766Z             {
2026-06-20T03:13:21.2272014Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T03:13:21.2272177Z               "line": 376
2026-06-20T03:13:21.2272338Z             }
2026-06-20T03:13:21.2272501Z           ]
2026-06-20T03:13:21.2272658Z         },
2026-06-20T03:13:21.2272825Z         "int": {
2026-06-20T03:13:21.2273006Z           "complete": true,
2026-06-20T03:13:21.2273182Z           "evidence": [
2026-06-20T03:13:21.2273360Z             {
2026-06-20T03:13:21.2273597Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T03:13:21.2273774Z               "line": 645
2026-06-20T03:13:21.2273936Z             },
2026-06-20T03:13:21.2274103Z             {
2026-06-20T03:13:21.2274330Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T03:13:21.2274493Z               "line": 887
2026-06-20T03:13:21.2274655Z             }
2026-06-20T03:13:21.2274813Z           ]
2026-06-20T03:13:21.2274985Z         },
2026-06-20T03:13:21.2275165Z         "unit": {
2026-06-20T03:13:21.2275347Z           "complete": true,
2026-06-20T03:13:21.2275518Z           "evidence": [
2026-06-20T03:13:21.2275690Z             {
2026-06-20T03:13:21.2275924Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T03:13:21.2276109Z               "line": 236
2026-06-20T03:13:21.2276287Z             },
2026-06-20T03:13:21.2276452Z             {
2026-06-20T03:13:21.2276712Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T03:13:21.2276888Z               "line": 349
2026-06-20T03:13:21.2277079Z             },
2026-06-20T03:13:21.2277246Z             {
2026-06-20T03:13:21.2277498Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-20T03:13:21.2277680Z               "line": 194
2026-06-20T03:13:21.2277847Z             },
2026-06-20T03:13:21.2278009Z             {
2026-06-20T03:13:21.2278257Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-20T03:13:21.2278437Z               "line": 216
2026-06-20T03:13:21.2278600Z             },
2026-06-20T03:13:21.2278747Z             {
2026-06-20T03:13:21.2279072Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-20T03:13:21.2279235Z               "line": 230
2026-06-20T03:13:21.2279400Z             },
2026-06-20T03:13:21.2279580Z             {
2026-06-20T03:13:21.2280002Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-20T03:13:21.2280471Z               "line": 242
2026-06-20T03:13:21.2280627Z             },
2026-06-20T03:13:21.2280791Z             {
2026-06-20T03:13:21.2281028Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-20T03:13:21.2281195Z               "line": 256
2026-06-20T03:13:21.2281353Z             },
2026-06-20T03:13:21.2281505Z             {
2026-06-20T03:13:21.2281754Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-20T03:13:21.2281929Z               "line": 270
2026-06-20T03:13:21.2282091Z             },
2026-06-20T03:13:21.2282245Z             {
2026-06-20T03:13:21.2282489Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-20T03:13:21.2282656Z               "line": 277
2026-06-20T03:13:21.2282823Z             },
2026-06-20T03:13:21.2282985Z             {
2026-06-20T03:13:21.2283223Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-20T03:13:21.2283409Z               "line": 295
2026-06-20T03:13:21.2283566Z             },
2026-06-20T03:13:21.2283714Z             {
2026-06-20T03:13:21.2283944Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T03:13:21.2284115Z               "line": 968
2026-06-20T03:13:21.2284273Z             },
2026-06-20T03:13:21.2284429Z             {
2026-06-20T03:13:21.2284743Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T03:13:21.2284915Z               "line": 1051
2026-06-20T03:13:21.2285082Z             },
2026-06-20T03:13:21.2285234Z             {
2026-06-20T03:13:21.2285472Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T03:13:21.2285649Z               "line": 1121
2026-06-20T03:13:21.2285801Z             },
2026-06-20T03:13:21.2285959Z             {
2026-06-20T03:13:21.2286199Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T03:13:21.2286374Z               "line": 1182
2026-06-20T03:13:21.2286584Z             },
2026-06-20T03:13:21.2286746Z             {
2026-06-20T03:13:21.2286993Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T03:13:21.2287169Z               "line": 1238
2026-06-20T03:13:21.2287339Z             },
2026-06-20T03:13:21.2287482Z             {
2026-06-20T03:13:21.2287729Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T03:13:21.2287902Z               "line": 1457
2026-06-20T03:13:21.2288058Z             }
2026-06-20T03:13:21.2288226Z           ]
2026-06-20T03:13:21.2288383Z         }
2026-06-20T03:13:21.2288541Z       }
2026-06-20T03:13:21.2288702Z     },
2026-06-20T03:13:21.2288855Z     {
2026-06-20T03:13:21.2289127Z       "id": "REQ-PAIR-2",
2026-06-20T03:13:21.2289390Z       "title": "Local trust store with TOFU + warn-on-change",
2026-06-20T03:13:21.2289560Z       "requiredStages": [],
2026-06-20T03:13:21.2289715Z       "stages": {
2026-06-20T03:13:21.2289889Z         "doc": {
2026-06-20T03:13:21.2290056Z           "complete": false,
2026-06-20T03:13:21.2290243Z           "evidence": []
2026-06-20T03:13:21.2290407Z         },
2026-06-20T03:13:21.2290572Z         "impl": {
2026-06-20T03:13:21.2290759Z           "complete": false,
2026-06-20T03:13:21.2290920Z           "evidence": []
2026-06-20T03:13:21.2291074Z         },
2026-06-20T03:13:21.2291225Z         "int": {
2026-06-20T03:13:21.2291407Z           "complete": false,
2026-06-20T03:13:21.2291584Z           "evidence": []
2026-06-20T03:13:21.2291732Z         },
2026-06-20T03:13:21.2291899Z         "unit": {
2026-06-20T03:13:21.2292070Z           "complete": false,
2026-06-20T03:13:21.2292257Z           "evidence": []
2026-06-20T03:13:21.2292408Z         }
2026-06-20T03:13:21.2292579Z       }
2026-06-20T03:13:21.2292739Z     },
2026-06-20T03:13:21.2292892Z     {
2026-06-20T03:13:21.2293068Z       "id": "REQ-PAIR-3",
2026-06-20T03:13:21.2293345Z       "title": "Fetch current pairing code from any paired node",
2026-06-20T03:13:21.2293521Z       "requiredStages": [
2026-06-20T03:13:21.2293836Z         "impl",
2026-06-20T03:13:21.2293997Z         "unit"
2026-06-20T03:13:21.2294165Z       ],
2026-06-20T03:13:21.2294461Z       "stages": {
2026-06-20T03:13:21.2294632Z         "doc": {
2026-06-20T03:13:21.2294805Z           "complete": false,
2026-06-20T03:13:21.2294979Z           "evidence": []
2026-06-20T03:13:21.2295139Z         },
2026-06-20T03:13:21.2295299Z         "impl": {
2026-06-20T03:13:21.2295470Z           "complete": true,
2026-06-20T03:13:21.2295646Z           "evidence": [
2026-06-20T03:13:21.2295804Z             {
2026-06-20T03:13:21.2296013Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2296191Z               "line": 3259
2026-06-20T03:13:21.2296347Z             },
2026-06-20T03:13:21.2296510Z             {
2026-06-20T03:13:21.2296730Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2296911Z               "line": 3328
2026-06-20T03:13:21.2297073Z             },
2026-06-20T03:13:21.2297234Z             {
2026-06-20T03:13:21.2297446Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2297615Z               "line": 3709
2026-06-20T03:13:21.2297782Z             },
2026-06-20T03:13:21.2297951Z             {
2026-06-20T03:13:21.2298143Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2298323Z               "line": 4961
2026-06-20T03:13:21.2298481Z             }
2026-06-20T03:13:21.2298648Z           ]
2026-06-20T03:13:21.2298805Z         },
2026-06-20T03:13:21.2299058Z         "int": {
2026-06-20T03:13:21.2299234Z           "complete": false,
2026-06-20T03:13:21.2299410Z           "evidence": []
2026-06-20T03:13:21.2299607Z         },
2026-06-20T03:13:21.2299763Z         "unit": {
2026-06-20T03:13:21.2299950Z           "complete": true,
2026-06-20T03:13:21.2300116Z           "evidence": [
2026-06-20T03:13:21.2300270Z             {
2026-06-20T03:13:21.2300468Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2300630Z               "line": 9964
2026-06-20T03:13:21.2300804Z             },
2026-06-20T03:13:21.2300957Z             {
2026-06-20T03:13:21.2301166Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2301329Z               "line": 10179
2026-06-20T03:13:21.2301500Z             },
2026-06-20T03:13:21.2301658Z             {
2026-06-20T03:13:21.2301858Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2302034Z               "line": 10838
2026-06-20T03:13:21.2302193Z             },
2026-06-20T03:13:21.2302353Z             {
2026-06-20T03:13:21.2302560Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2302745Z               "line": 10857
2026-06-20T03:13:21.2302917Z             },
2026-06-20T03:13:21.2303072Z             {
2026-06-20T03:13:21.2303276Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2303437Z               "line": 10881
2026-06-20T03:13:21.2303600Z             },
2026-06-20T03:13:21.2303752Z             {
2026-06-20T03:13:21.2303962Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2304144Z               "line": 10900
2026-06-20T03:13:21.2304305Z             },
2026-06-20T03:13:21.2304468Z             {
2026-06-20T03:13:21.2304672Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2304845Z               "line": 10913
2026-06-20T03:13:21.2305001Z             },
2026-06-20T03:13:21.2305164Z             {
2026-06-20T03:13:21.2305360Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2305526Z               "line": 10922
2026-06-20T03:13:21.2305689Z             }
2026-06-20T03:13:21.2305840Z           ]
2026-06-20T03:13:21.2306002Z         }
2026-06-20T03:13:21.2306160Z       }
2026-06-20T03:13:21.2306321Z     },
2026-06-20T03:13:21.2306484Z     {
2026-06-20T03:13:21.2306651Z       "id": "REQ-PAIR-4",
2026-06-20T03:13:21.2306902Z       "title": "Subnet naming on first pairing",
2026-06-20T03:13:21.2307090Z       "requiredStages": [
2026-06-20T03:13:21.2307256Z         "impl",
2026-06-20T03:13:21.2307414Z         "unit"
2026-06-20T03:13:21.2307581Z       ],
2026-06-20T03:13:21.2307900Z       "stages": {
2026-06-20T03:13:21.2308066Z         "doc": {
2026-06-20T03:13:21.2308440Z           "complete": false,
2026-06-20T03:13:21.2308616Z           "evidence": []
2026-06-20T03:13:21.2308783Z         },
2026-06-20T03:13:21.2309027Z         "impl": {
2026-06-20T03:13:21.2309213Z           "complete": true,
2026-06-20T03:13:21.2309403Z           "evidence": [
2026-06-20T03:13:21.2309552Z             {
2026-06-20T03:13:21.2315471Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T03:13:21.2315682Z               "line": 174
2026-06-20T03:13:21.2315843Z             }
2026-06-20T03:13:21.2316001Z           ]
2026-06-20T03:13:21.2316153Z         },
2026-06-20T03:13:21.2316326Z         "int": {
2026-06-20T03:13:21.2316514Z           "complete": false,
2026-06-20T03:13:21.2316687Z           "evidence": []
2026-06-20T03:13:21.2316848Z         },
2026-06-20T03:13:21.2317011Z         "unit": {
2026-06-20T03:13:21.2317196Z           "complete": true,
2026-06-20T03:13:21.2317383Z           "evidence": [
2026-06-20T03:13:21.2317545Z             {
2026-06-20T03:13:21.2317816Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T03:13:21.2317998Z               "line": 1294
2026-06-20T03:13:21.2318160Z             }
2026-06-20T03:13:21.2318321Z           ]
2026-06-20T03:13:21.2318484Z         }
2026-06-20T03:13:21.2318641Z       }
2026-06-20T03:13:21.2318792Z     },
2026-06-20T03:13:21.2319028Z     {
2026-06-20T03:13:21.2319201Z       "id": "REQ-PAIR-5",
2026-06-20T03:13:21.2319797Z       "title": "Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing",
2026-06-20T03:13:21.2319978Z       "requiredStages": [
2026-06-20T03:13:21.2320145Z         "impl",
2026-06-20T03:13:21.2320288Z         "unit",
2026-06-20T03:13:21.2320450Z         "int"
2026-06-20T03:13:21.2320617Z       ],
2026-06-20T03:13:21.2320780Z       "stages": {
2026-06-20T03:13:21.2320941Z         "doc": {
2026-06-20T03:13:21.2321118Z           "complete": false,
2026-06-20T03:13:21.2321303Z           "evidence": []
2026-06-20T03:13:21.2321466Z         },
2026-06-20T03:13:21.2321641Z         "impl": {
2026-06-20T03:13:21.2321807Z           "complete": true,
2026-06-20T03:13:21.2321981Z           "evidence": [
2026-06-20T03:13:21.2322140Z             {
2026-06-20T03:13:21.2322388Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-20T03:13:21.2322563Z               "line": 44
2026-06-20T03:13:21.2322722Z             },
2026-06-20T03:13:21.2322873Z             {
2026-06-20T03:13:21.2323116Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-20T03:13:21.2323284Z               "line": 96
2026-06-20T03:13:21.2323454Z             },
2026-06-20T03:13:21.2323604Z             {
2026-06-20T03:13:21.2323846Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-20T03:13:21.2324019Z               "line": 107
2026-06-20T03:13:21.2324193Z             },
2026-06-20T03:13:21.2324360Z             {
2026-06-20T03:13:21.2324606Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-20T03:13:21.2324772Z               "line": 124
2026-06-20T03:13:21.2324941Z             },
2026-06-20T03:13:21.2325106Z             {
2026-06-20T03:13:21.2325355Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-20T03:13:21.2325527Z               "line": 155
2026-06-20T03:13:21.2325678Z             },
2026-06-20T03:13:21.2325826Z             {
2026-06-20T03:13:21.2326079Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-20T03:13:21.2326257Z               "line": 195
2026-06-20T03:13:21.2326427Z             },
2026-06-20T03:13:21.2326595Z             {
2026-06-20T03:13:21.2326839Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-20T03:13:21.2327018Z               "line": 251
2026-06-20T03:13:21.2327185Z             },
2026-06-20T03:13:21.2327356Z             {
2026-06-20T03:13:21.2327637Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-20T03:13:21.2328028Z               "line": 33
2026-06-20T03:13:21.2328200Z             },
2026-06-20T03:13:21.2328496Z             {
2026-06-20T03:13:21.2328774Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-20T03:13:21.2329035Z               "line": 45
2026-06-20T03:13:21.2329196Z             },
2026-06-20T03:13:21.2329348Z             {
2026-06-20T03:13:21.2329617Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-20T03:13:21.2329790Z               "line": 59
2026-06-20T03:13:21.2329941Z             },
2026-06-20T03:13:21.2330110Z             {
2026-06-20T03:13:21.2330363Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T03:13:21.2330547Z               "line": 376
2026-06-20T03:13:21.2330696Z             }
2026-06-20T03:13:21.2330862Z           ]
2026-06-20T03:13:21.2331021Z         },
2026-06-20T03:13:21.2331182Z         "int": {
2026-06-20T03:13:21.2331373Z           "complete": true,
2026-06-20T03:13:21.2331539Z           "evidence": [
2026-06-20T03:13:21.2331707Z             {
2026-06-20T03:13:21.2331941Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T03:13:21.2332120Z               "line": 887
2026-06-20T03:13:21.2332273Z             },
2026-06-20T03:13:21.2332433Z             {
2026-06-20T03:13:21.2332681Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-20T03:13:21.2332847Z               "line": 342
2026-06-20T03:13:21.2333005Z             }
2026-06-20T03:13:21.2333156Z           ]
2026-06-20T03:13:21.2333315Z         },
2026-06-20T03:13:21.2333486Z         "unit": {
2026-06-20T03:13:21.2333653Z           "complete": true,
2026-06-20T03:13:21.2333820Z           "evidence": [
2026-06-20T03:13:21.2333982Z             {
2026-06-20T03:13:21.2334231Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-20T03:13:21.2334383Z               "line": 293
2026-06-20T03:13:21.2334541Z             },
2026-06-20T03:13:21.2334710Z             {
2026-06-20T03:13:21.2334962Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-20T03:13:21.2335138Z               "line": 304
2026-06-20T03:13:21.2335295Z             },
2026-06-20T03:13:21.2335462Z             {
2026-06-20T03:13:21.2335695Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-20T03:13:21.2335872Z               "line": 406
2026-06-20T03:13:21.2336038Z             },
2026-06-20T03:13:21.2336197Z             {
2026-06-20T03:13:21.2336478Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-20T03:13:21.2336648Z               "line": 72
2026-06-20T03:13:21.2336817Z             },
2026-06-20T03:13:21.2336973Z             {
2026-06-20T03:13:21.2337230Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-20T03:13:21.2337403Z               "line": 82
2026-06-20T03:13:21.2337554Z             },
2026-06-20T03:13:21.2337721Z             {
2026-06-20T03:13:21.2337973Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-20T03:13:21.2338151Z               "line": 100
2026-06-20T03:13:21.2338317Z             },
2026-06-20T03:13:21.2338480Z             {
2026-06-20T03:13:21.2338751Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-20T03:13:21.2338922Z               "line": 110
2026-06-20T03:13:21.2339166Z             },
2026-06-20T03:13:21.2339314Z             {
2026-06-20T03:13:21.2339585Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-20T03:13:21.2339756Z               "line": 125
2026-06-20T03:13:21.2339908Z             },
2026-06-20T03:13:21.2340074Z             {
2026-06-20T03:13:21.2340312Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T03:13:21.2340488Z               "line": 1044
2026-06-20T03:13:21.2340641Z             },
2026-06-20T03:13:21.2340802Z             {
2026-06-20T03:13:21.2341046Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T03:13:21.2341218Z               "line": 1110
2026-06-20T03:13:21.2341542Z             },
2026-06-20T03:13:21.2341695Z             {
2026-06-20T03:13:21.2342071Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T03:13:21.2342248Z               "line": 1357
2026-06-20T03:13:21.2342405Z             }
2026-06-20T03:13:21.2342563Z           ]
2026-06-20T03:13:21.2342714Z         }
2026-06-20T03:13:21.2342871Z       }
2026-06-20T03:13:21.2343035Z     },
2026-06-20T03:13:21.2343198Z     {
2026-06-20T03:13:21.2343379Z       "id": "REQ-PAIR-6",
2026-06-20T03:13:21.2343865Z       "title": "Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)",
2026-06-20T03:13:21.2344056Z       "requiredStages": [
2026-06-20T03:13:21.2344223Z         "impl",
2026-06-20T03:13:21.2344385Z         "unit"
2026-06-20T03:13:21.2344542Z       ],
2026-06-20T03:13:21.2344715Z       "stages": {
2026-06-20T03:13:21.2344876Z         "doc": {
2026-06-20T03:13:21.2345054Z           "complete": false,
2026-06-20T03:13:21.2345247Z           "evidence": []
2026-06-20T03:13:21.2345400Z         },
2026-06-20T03:13:21.2345564Z         "impl": {
2026-06-20T03:13:21.2345741Z           "complete": true,
2026-06-20T03:13:21.2345921Z           "evidence": [
2026-06-20T03:13:21.2346080Z             {
2026-06-20T03:13:21.2346303Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2346480Z               "line": 3328
2026-06-20T03:13:21.2346642Z             },
2026-06-20T03:13:21.2346808Z             {
2026-06-20T03:13:21.2347005Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2347190Z               "line": 3709
2026-06-20T03:13:21.2347343Z             },
2026-06-20T03:13:21.2347500Z             {
2026-06-20T03:13:21.2347729Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T03:13:21.2347902Z               "line": 18
2026-06-20T03:13:21.2348067Z             },
2026-06-20T03:13:21.2348224Z             {
2026-06-20T03:13:21.2348439Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T03:13:21.2348620Z               "line": 49
2026-06-20T03:13:21.2348777Z             },
2026-06-20T03:13:21.2349030Z             {
2026-06-20T03:13:21.2349622Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T03:13:21.2349831Z               "line": 318
2026-06-20T03:13:21.2349960Z             }
2026-06-20T03:13:21.2350093Z           ]
2026-06-20T03:13:21.2350218Z         },
2026-06-20T03:13:21.2350345Z         "int": {
2026-06-20T03:13:21.2350488Z           "complete": false,
2026-06-20T03:13:21.2350620Z           "evidence": []
2026-06-20T03:13:21.2350743Z         },
2026-06-20T03:13:21.2350872Z         "unit": {
2026-06-20T03:13:21.2351014Z           "complete": true,
2026-06-20T03:13:21.2351149Z           "evidence": [
2026-06-20T03:13:21.2351263Z             {
2026-06-20T03:13:21.2351429Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2351559Z               "line": 10935
2026-06-20T03:13:21.2351686Z             },
2026-06-20T03:13:21.2351802Z             {
2026-06-20T03:13:21.2351987Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2352112Z               "line": 10952
2026-06-20T03:13:21.2352240Z             },
2026-06-20T03:13:21.2352369Z             {
2026-06-20T03:13:21.2352541Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T03:13:21.2352674Z               "line": 383
2026-06-20T03:13:21.2352794Z             },
2026-06-20T03:13:21.2352922Z             {
2026-06-20T03:13:21.2353095Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T03:13:21.2353222Z               "line": 392
2026-06-20T03:13:21.2353350Z             }
2026-06-20T03:13:21.2353469Z           ]
2026-06-20T03:13:21.2353595Z         }
2026-06-20T03:13:21.2353720Z       }
2026-06-20T03:13:21.2353840Z     },
2026-06-20T03:13:21.2353972Z     {
2026-06-20T03:13:21.2354092Z       "id": "REQ-PAIR-7",
2026-06-20T03:13:21.2354340Z       "title": "Subnet icon (inline image metadata, GUI-only consumer)",
2026-06-20T03:13:21.2354479Z       "requiredStages": [],
2026-06-20T03:13:21.2354893Z       "stages": {
2026-06-20T03:13:21.2355018Z         "doc": {
2026-06-20T03:13:21.2355164Z           "complete": false,
2026-06-20T03:13:21.2355412Z           "evidence": []
2026-06-20T03:13:21.2355537Z         },
2026-06-20T03:13:21.2355672Z         "impl": {
2026-06-20T03:13:21.2355807Z           "complete": false,
2026-06-20T03:13:21.2355950Z           "evidence": []
2026-06-20T03:13:21.2356063Z         },
2026-06-20T03:13:21.2356195Z         "int": {
2026-06-20T03:13:21.2356325Z           "complete": false,
2026-06-20T03:13:21.2356458Z           "evidence": []
2026-06-20T03:13:21.2356582Z         },
2026-06-20T03:13:21.2356707Z         "unit": {
2026-06-20T03:13:21.2356844Z           "complete": false,
2026-06-20T03:13:21.2356978Z           "evidence": []
2026-06-20T03:13:21.2357106Z         }
2026-06-20T03:13:21.2357236Z       }
2026-06-20T03:13:21.2357359Z     },
2026-06-20T03:13:21.2357488Z     {
2026-06-20T03:13:21.2357631Z       "id": "REQ-PAIR-8",
2026-06-20T03:13:21.2359704Z       "title": "NTP TOTP offset: the pairing ceremony queries NTP at ceremony time (both sides) and applies the derived offset to the TOTP calculation in-process only; system-clock fallback when NTP is unreachable (offline LAN pairing unaffected — NTP failure never blocks a pairing that succeeds today); never sets the OS clock; no background sync loop (M8 decision 18; field trigger: enlyzeam clock >1 min off exceeds the ±1 window)",
2026-06-20T03:13:21.2359872Z       "requiredStages": [
2026-06-20T03:13:21.2359995Z         "impl",
2026-06-20T03:13:21.2360125Z         "unit"
2026-06-20T03:13:21.2360243Z       ],
2026-06-20T03:13:21.2360382Z       "stages": {
2026-06-20T03:13:21.2360496Z         "doc": {
2026-06-20T03:13:21.2360620Z           "complete": false,
2026-06-20T03:13:21.2360730Z           "evidence": []
2026-06-20T03:13:21.2360830Z         },
2026-06-20T03:13:21.2360929Z         "impl": {
2026-06-20T03:13:21.2361033Z           "complete": true,
2026-06-20T03:13:21.2361138Z           "evidence": [
2026-06-20T03:13:21.2361260Z             {
2026-06-20T03:13:21.2361418Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T03:13:21.2361551Z               "line": 577
2026-06-20T03:13:21.2361651Z             },
2026-06-20T03:13:21.2361752Z             {
2026-06-20T03:13:21.2361909Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-20T03:13:21.2362009Z               "line": 22
2026-06-20T03:13:21.2362114Z             },
2026-06-20T03:13:21.2362219Z             {
2026-06-20T03:13:21.2362372Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-20T03:13:21.2362476Z               "line": 76
2026-06-20T03:13:21.2362585Z             },
2026-06-20T03:13:21.2362687Z             {
2026-06-20T03:13:21.2362834Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-20T03:13:21.2362939Z               "line": 127
2026-06-20T03:13:21.2363045Z             }
2026-06-20T03:13:21.2363143Z           ]
2026-06-20T03:13:21.2363249Z         },
2026-06-20T03:13:21.2363359Z         "int": {
2026-06-20T03:13:21.2363458Z           "complete": false,
2026-06-20T03:13:21.2363569Z           "evidence": []
2026-06-20T03:13:21.2363679Z         },
2026-06-20T03:13:21.2363782Z         "unit": {
2026-06-20T03:13:21.2363896Z           "complete": true,
2026-06-20T03:13:21.2363996Z           "evidence": [
2026-06-20T03:13:21.2364109Z             {
2026-06-20T03:13:21.2364256Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-20T03:13:21.2364361Z               "line": 183
2026-06-20T03:13:21.2364456Z             },
2026-06-20T03:13:21.2364561Z             {
2026-06-20T03:13:21.2364715Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-20T03:13:21.2364818Z               "line": 195
2026-06-20T03:13:21.2364924Z             },
2026-06-20T03:13:21.2365024Z             {
2026-06-20T03:13:21.2365176Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-20T03:13:21.2365287Z               "line": 211
2026-06-20T03:13:21.2365392Z             },
2026-06-20T03:13:21.2365672Z             {
2026-06-20T03:13:21.2365820Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-20T03:13:21.2366024Z               "line": 227
2026-06-20T03:13:21.2366126Z             }
2026-06-20T03:13:21.2366232Z           ]
2026-06-20T03:13:21.2366330Z         }
2026-06-20T03:13:21.2366434Z       }
2026-06-20T03:13:21.2366534Z     },
2026-06-20T03:13:21.2366633Z     {
2026-06-20T03:13:21.2366756Z       "id": "REQ-PICKER-1",
2026-06-20T03:13:21.2370479Z       "title": "The picker renders a FOUR-state endpoint status (extending the W2 online/offline duality): the list-item square AND a color-coded STATUS line at the top of the pick-existing right-side details both show — gray OFFLINE; green ONLINE (online + PTY-controllable spt-hosted, not controlled); amber 'ONLINE - HARNESS ONLY' (online but NOT broker-PTY-controllable = harness-hosted, no broker PTY seat — today mis-shows green); blue 'ONLINE + CONTROLLED' (online + driven_by.is_some()). Derived on EndpointRow from {offline | controllable | driven_by} with precedence offline→gray, else driven_by→blue, else !controllable→amber, else green (driven_by outranks harness-only; mutually exclusive in practice — a harness-only endpoint has no broker PTY to control). The controllable discriminator is a NEW InfoJson.controllable: Option<bool> (serde-default, N-1-safe), stamped at the establish seam — cmd_listen (harness-hosted relay, no broker PTY) → Some(false); cmd_bind live_agent (spt-hosted broker PTY) → Some(true); absent → not-controllable (amber) default (harness-hosted is the common mis-reported case; one bind self-corrects). Store-projection-only (no live daemon query — doyle ruling). (v0.10.0)",
2026-06-20T03:13:21.2370661Z       "requiredStages": [
2026-06-20T03:13:21.2370770Z         "impl",
2026-06-20T03:13:21.2370875Z         "unit"
2026-06-20T03:13:21.2370966Z       ],
2026-06-20T03:13:21.2371076Z       "stages": {
2026-06-20T03:13:21.2371175Z         "doc": {
2026-06-20T03:13:21.2371300Z           "complete": false,
2026-06-20T03:13:21.2371432Z           "evidence": []
2026-06-20T03:13:21.2371532Z         },
2026-06-20T03:13:21.2371661Z         "impl": {
2026-06-20T03:13:21.2371768Z           "complete": true,
2026-06-20T03:13:21.2371882Z           "evidence": [
2026-06-20T03:13:21.2371983Z             {
2026-06-20T03:13:21.2372135Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.2372245Z               "line": 248
2026-06-20T03:13:21.2372351Z             },
2026-06-20T03:13:21.2372445Z             {
2026-06-20T03:13:21.2372584Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T03:13:21.2372698Z               "line": 263
2026-06-20T03:13:21.2372798Z             }
2026-06-20T03:13:21.2372899Z           ]
2026-06-20T03:13:21.2372999Z         },
2026-06-20T03:13:21.2373094Z         "int": {
2026-06-20T03:13:21.2373208Z           "complete": false,
2026-06-20T03:13:21.2373308Z           "evidence": []
2026-06-20T03:13:21.2373413Z         },
2026-06-20T03:13:21.2373519Z         "unit": {
2026-06-20T03:13:21.2373628Z           "complete": true,
2026-06-20T03:13:21.2373752Z           "evidence": [
2026-06-20T03:13:21.2373867Z             {
2026-06-20T03:13:21.2374004Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T03:13:21.2374109Z               "line": 476
2026-06-20T03:13:21.2374220Z             },
2026-06-20T03:13:21.2374319Z             {
2026-06-20T03:13:21.2374461Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.2374566Z               "line": 753
2026-06-20T03:13:21.2374674Z             },
2026-06-20T03:13:21.2374778Z             {
2026-06-20T03:13:21.2374908Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T03:13:21.2375021Z               "line": 886
2026-06-20T03:13:21.2375126Z             },
2026-06-20T03:13:21.2375232Z             {
2026-06-20T03:13:21.2375364Z               "path": "crates/spt/src/picker/view.rs",
2026-06-20T03:13:21.2375480Z               "line": 455
2026-06-20T03:13:21.2375800Z             }
2026-06-20T03:13:21.2375904Z           ]
2026-06-20T03:13:21.2376008Z         }
2026-06-20T03:13:21.2376209Z       }
2026-06-20T03:13:21.2376361Z     },
2026-06-20T03:13:21.2376458Z     {
2026-06-20T03:13:21.2376571Z       "id": "REQ-PICKER-2",
2026-06-20T03:13:21.2378565Z       "title": "The picker's project-history loader reads the git-backed context store, not the bare working tree: data.rs project_history_for enumerates an endpoint's projects via the BranchStore branch set (the context store keeps per-project context in git branches — contextstore::project_branch(project_id), checked out to projects/<project>/<id>/ only on-demand) instead of raw std::fs::read_dir over the empty working tree (which returned empty for ALL rows incl wall-a — the operator bug). Ordered newest→oldest by branch commit recency; degrades to empty (informational pane), never fails. (v0.10.0)",
2026-06-20T03:13:21.2378691Z       "requiredStages": [
2026-06-20T03:13:21.2378794Z         "impl",
2026-06-20T03:13:21.2378914Z         "unit"
2026-06-20T03:13:21.2379086Z       ],
2026-06-20T03:13:21.2379200Z       "stages": {
2026-06-20T03:13:21.2379315Z         "doc": {
2026-06-20T03:13:21.2379443Z           "complete": false,
2026-06-20T03:13:21.2379558Z           "evidence": []
2026-06-20T03:13:21.2379654Z         },
2026-06-20T03:13:21.2379758Z         "impl": {
2026-06-20T03:13:21.2379866Z           "complete": true,
2026-06-20T03:13:21.2379981Z           "evidence": [
2026-06-20T03:13:21.2380082Z             {
2026-06-20T03:13:21.2380238Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T03:13:21.2380348Z               "line": 183
2026-06-20T03:13:21.2380448Z             },
2026-06-20T03:13:21.2380548Z             {
2026-06-20T03:13:21.2380687Z               "path": "crates/spt/src/picker/data.rs",
2026-06-20T03:13:21.2380800Z               "line": 296
2026-06-20T03:13:21.2380902Z             }
2026-06-20T03:13:21.2381006Z           ]
2026-06-20T03:13:21.2381110Z         },
2026-06-20T03:13:21.2381221Z         "int": {
2026-06-20T03:13:21.2381335Z           "complete": false,
2026-06-20T03:13:21.2381440Z           "evidence": []
2026-06-20T03:13:21.2381546Z         },
2026-06-20T03:13:21.2381650Z         "unit": {
2026-06-20T03:13:21.2381759Z           "complete": true,
2026-06-20T03:13:21.2381875Z           "evidence": [
2026-06-20T03:13:21.2381970Z             {
2026-06-20T03:13:21.2382125Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T03:13:21.2382231Z               "line": 655
2026-06-20T03:13:21.2382333Z             }
2026-06-20T03:13:21.2382433Z           ]
2026-06-20T03:13:21.2382543Z         }
2026-06-20T03:13:21.2382648Z       }
2026-06-20T03:13:21.2382733Z     },
2026-06-20T03:13:21.2382839Z     {
2026-06-20T03:13:21.2382949Z       "id": "REQ-PICKER-3",
2026-06-20T03:13:21.2385478Z       "title": "A self-owned subnet row reconciles its status to the LIVE roster: a Subnet-category row whose endpoint_id overlaps a local (is_local) roster id is self-owned (this node hosts it), so its status square is OVERRIDDEN with the live roster status — the WAN registry snapshot (wansend::load_snapshots) is a periodically-advertised, independently-stale projection, while the local roster (p.alive) is ground truth for an endpoint this node hosts. One status square per endpoint (CONTEXT.md:348-350 — nothing licenses opposite squares for one endpoint across its Local vs Subnet listings). A reconcile pass in data.rs after the local_rows + subnet_rows gather; BOTH category listings are preserved (Local + Subnet are legitimately distinct views — you are in your own subnet), only the STATUS is unified. (v0.10.0)",
2026-06-20T03:13:21.2385615Z       "requiredStages": [
2026-06-20T03:13:21.2385721Z         "impl",
2026-06-20T03:13:21.2385821Z         "unit"
2026-06-20T03:13:21.2385930Z       ],
2026-06-20T03:13:21.2386036Z       "stages": {
2026-06-20T03:13:21.2386140Z         "doc": {
2026-06-20T03:13:21.2386249Z           "complete": false,
2026-06-20T03:13:21.2386370Z           "evidence": []
2026-06-20T03:13:21.2386611Z         },
2026-06-20T03:13:21.2386717Z         "impl": {
2026-06-20T03:13:21.2386835Z           "complete": true,
2026-06-20T03:13:21.2387051Z           "evidence": [
2026-06-20T03:13:21.2387155Z             {
2026-06-20T03:13:21.2387290Z               "path": "crates/spt/src/picker/data.rs",
2026-06-20T03:13:21.2387404Z               "line": 124
2026-06-20T03:13:21.2387507Z             }
2026-06-20T03:13:21.2387602Z           ]
2026-06-20T03:13:21.2387716Z         },
2026-06-20T03:13:21.2387815Z         "int": {
2026-06-20T03:13:21.2387929Z           "complete": false,
2026-06-20T03:13:21.2388040Z           "evidence": []
2026-06-20T03:13:21.2388144Z         },
2026-06-20T03:13:21.2388263Z         "unit": {
2026-06-20T03:13:21.2388364Z           "complete": true,
2026-06-20T03:13:21.2388477Z           "evidence": [
2026-06-20T03:13:21.2388573Z             {
2026-06-20T03:13:21.2388721Z               "path": "crates/spt/src/picker/data.rs",
2026-06-20T03:13:21.2388829Z               "line": 369
2026-06-20T03:13:21.2389054Z             }
2026-06-20T03:13:21.2389159Z           ]
2026-06-20T03:13:21.2389260Z         }
2026-06-20T03:13:21.2389364Z       }
2026-06-20T03:13:21.2389459Z     },
2026-06-20T03:13:21.2389566Z     {
2026-06-20T03:13:21.2389674Z       "id": "REQ-PICKER-4",
2026-06-20T03:13:21.2391638Z       "title": "The picker's Subnet category renders the canonical node LABEL, not bare key-hex: a subnet row's node renders as 'LABEL (keyprefix…)' (e.g. 'HFENDULEAM (bcead52b…)') per CONTEXT.md:650 + Instance.node_label, NOT the raw node key-hex (SPT_DEV:14efb80cb… — a picker-only regression because resource_projection→ResourceRow drops node_label, so data.rs subnet_rows uses the raw row.node). Thread node_label into the picker subnet path (ResourceRow gains node_label, or subnet_rows looks it up via the registry's node_labels) and REUSE the one canonical render (format!(\"{l} ({}…)\", key_prefix) — cli.rs / wansend.rs), never a re-implementation. (v0.10.0)",
2026-06-20T03:13:21.2394167Z       "requiredStages": [
2026-06-20T03:13:21.2394401Z         "impl",
2026-06-20T03:13:21.2394600Z         "unit"
2026-06-20T03:13:21.2394809Z       ],
2026-06-20T03:13:21.2395007Z       "stages": {
2026-06-20T03:13:21.2395225Z         "doc": {
2026-06-20T03:13:21.2395491Z           "complete": false,
2026-06-20T03:13:21.2395729Z           "evidence": []
2026-06-20T03:13:21.2395956Z         },
2026-06-20T03:13:21.2396161Z         "impl": {
2026-06-20T03:13:21.2396386Z           "complete": true,
2026-06-20T03:13:21.2396620Z           "evidence": [
2026-06-20T03:13:21.2396838Z             {
2026-06-20T03:13:21.2397091Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.2397391Z               "line": 353
2026-06-20T03:13:21.2397612Z             },
2026-06-20T03:13:21.2397811Z             {
2026-06-20T03:13:21.2398053Z               "path": "crates/spt/src/picker/data.rs",
2026-06-20T03:13:21.2398327Z               "line": 105
2026-06-20T03:13:21.2398547Z             }
2026-06-20T03:13:21.2398742Z           ]
2026-06-20T03:13:21.2398928Z         },
2026-06-20T03:13:21.2399200Z         "int": {
2026-06-20T03:13:21.2399419Z           "complete": false,
2026-06-20T03:13:21.2399662Z           "evidence": []
2026-06-20T03:13:21.2399882Z         },
2026-06-20T03:13:21.2400073Z         "unit": {
2026-06-20T03:13:21.2400287Z           "complete": true,
2026-06-20T03:13:21.2400511Z           "evidence": [
2026-06-20T03:13:21.2400765Z             {
2026-06-20T03:13:21.2401005Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.2401287Z               "line": 1246
2026-06-20T03:13:21.2401512Z             },
2026-06-20T03:13:21.2401708Z             {
2026-06-20T03:13:21.2401949Z               "path": "crates/spt/src/picker/data.rs",
2026-06-20T03:13:21.2402226Z               "line": 427
2026-06-20T03:13:21.2402442Z             }
2026-06-20T03:13:21.2402642Z           ]
2026-06-20T03:13:21.2402841Z         }
2026-06-20T03:13:21.2403024Z       }
2026-06-20T03:13:21.2403365Z     },
2026-06-20T03:13:21.2403548Z     {
2026-06-20T03:13:21.2403760Z       "id": "REQ-PICKER-5",
2026-06-20T03:13:21.2407122Z       "title": "`spt endpoint list` (bare/subnet view) renders an ALIGNED table with canonical node labels: cmd_endpoint_list prints subnet rows with `\\t` TAB separators (cli.rs:~1651-1662) so variable-width endpoint_ids snap fields to different tab-stops → a RAGGED status column (operator screenshot: X/help statuses misaligned vs rt-*/sptc-*/wall-a); and it calls the node renderer with no label → bare key-hex for every row (SAME ResourceRow-drops-node_label root as REQ-PICKER-4). FIX: max-width per-column padding (mirror render_node_rows' pad, pad by char count not byte len — '…' is multibyte) replacing the tabs, and render the node via the shared node_label_display now that ResourceRow carries node_label (REQ-PICKER-4). Extract a pure row-formatter seam so the alignment+label is unit-testable. ALSO: the bare list is the SUBNET view (a just-run LOCAL perch is invisible cross-subnet until the next advertise tick), so emit a `--local` hint line so a freshly-run endpoint isn't perceived as lost. (v0.10.0; operator-flagged + doyle dispatch 2026-06-17)",
2026-06-20T03:13:21.2410122Z       "requiredStages": [
2026-06-20T03:13:21.2410347Z         "impl",
2026-06-20T03:13:21.2410561Z         "unit"
2026-06-20T03:13:21.2410762Z       ],
2026-06-20T03:13:21.2410958Z       "stages": {
2026-06-20T03:13:21.2411167Z         "doc": {
2026-06-20T03:13:21.2411378Z           "complete": false,
2026-06-20T03:13:21.2411623Z           "evidence": []
2026-06-20T03:13:21.2411866Z         },
2026-06-20T03:13:21.2412063Z         "impl": {
2026-06-20T03:13:21.2412278Z           "complete": true,
2026-06-20T03:13:21.2412510Z           "evidence": [
2026-06-20T03:13:21.2412725Z             {
2026-06-20T03:13:21.2412950Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2413212Z               "line": 1802
2026-06-20T03:13:21.2413435Z             }
2026-06-20T03:13:21.2413636Z           ]
2026-06-20T03:13:21.2413840Z         },
2026-06-20T03:13:21.2414023Z         "int": {
2026-06-20T03:13:21.2414238Z           "complete": false,
2026-06-20T03:13:21.2414476Z           "evidence": []
2026-06-20T03:13:21.2414686Z         },
2026-06-20T03:13:21.2414887Z         "unit": {
2026-06-20T03:13:21.2415101Z           "complete": true,
2026-06-20T03:13:21.2415335Z           "evidence": [
2026-06-20T03:13:21.2415549Z             {
2026-06-20T03:13:21.2415774Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2416050Z               "line": 7526
2026-06-20T03:13:21.2416274Z             }
2026-06-20T03:13:21.2416494Z           ]
2026-06-20T03:13:21.2416687Z         }
2026-06-20T03:13:21.2416881Z       }
2026-06-20T03:13:21.2417067Z     },
2026-06-20T03:13:21.2417248Z     {
2026-06-20T03:13:21.2417506Z       "id": "REQ-PICKER-ADAPTER-DESCRIPTION",
2026-06-20T03:13:21.2419188Z       "title": "The Create-new adapter-CHOICE screen of `spt endpoint run`'s picker shows a right-hand Description panel (like the Pick-existing endpoint picker's two-pane) surfacing per-adapter detail: install date, last-updated, adapter TYPE / the endpoint types it hosts, and the adapter description — so the user can see WHAT each adapter is before choosing it (today the selector lists bare names). DEFERRED fast-follow to v0.12.0 (operator 2026-06-18). (post-v0.12.0)",
2026-06-20T03:13:21.2420549Z       "requiredStages": [],
2026-06-20T03:13:21.2420783Z       "stages": {
2026-06-20T03:13:21.2420979Z         "doc": {
2026-06-20T03:13:21.2421203Z           "complete": false,
2026-06-20T03:13:21.2421445Z           "evidence": []
2026-06-20T03:13:21.2421665Z         },
2026-06-20T03:13:21.2421862Z         "impl": {
2026-06-20T03:13:21.2422084Z           "complete": false,
2026-06-20T03:13:21.2422323Z           "evidence": []
2026-06-20T03:13:21.2422542Z         },
2026-06-20T03:13:21.2422741Z         "int": {
2026-06-20T03:13:21.2422947Z           "complete": false,
2026-06-20T03:13:21.2423191Z           "evidence": []
2026-06-20T03:13:21.2423539Z         },
2026-06-20T03:13:21.2423733Z         "unit": {
2026-06-20T03:13:21.2423947Z           "complete": false,
2026-06-20T03:13:21.2424281Z           "evidence": []
2026-06-20T03:13:21.2424495Z         }
2026-06-20T03:13:21.2424678Z       }
2026-06-20T03:13:21.2424861Z     },
2026-06-20T03:13:21.2425056Z     {
2026-06-20T03:13:21.2425279Z       "id": "REQ-PICKER-HISTORY-FRESH",
2026-06-20T03:13:21.2426596Z       "title": "The `spt endpoint run` picker shows project history for FRESH endpoints (operator-raised v0.12.0 real-harness finding). Symptom: a fresh endpoint shows no project history in the picker. ROOT TBD — investigate the project-history loader (v0.10.0 PICKER-2, picker/data.rs) before fixing: distinguish a real loader bug from 'fresh = no history yet' semantics. (v0.12.1)",
2026-06-20T03:13:21.2427699Z       "requiredStages": [
2026-06-20T03:13:21.2432892Z         "impl",
2026-06-20T03:13:21.2433122Z         "unit"
2026-06-20T03:13:21.2433335Z       ],
2026-06-20T03:13:21.2433569Z       "stages": {
2026-06-20T03:13:21.2433784Z         "doc": {
2026-06-20T03:13:21.2434008Z           "complete": false,
2026-06-20T03:13:21.2434274Z           "evidence": []
2026-06-20T03:13:21.2434489Z         },
2026-06-20T03:13:21.2434700Z         "impl": {
2026-06-20T03:13:21.2434913Z           "complete": true,
2026-06-20T03:13:21.2435149Z           "evidence": [
2026-06-20T03:13:21.2435364Z             {
2026-06-20T03:13:21.2435611Z               "path": "crates/spt/src/picker/data.rs",
2026-06-20T03:13:21.2435892Z               "line": 275
2026-06-20T03:13:21.2436126Z             }
2026-06-20T03:13:21.2436332Z           ]
2026-06-20T03:13:21.2436527Z         },
2026-06-20T03:13:21.2436727Z         "int": {
2026-06-20T03:13:21.2436952Z           "complete": false,
2026-06-20T03:13:21.2437185Z           "evidence": []
2026-06-20T03:13:21.2437404Z         },
2026-06-20T03:13:21.2437591Z         "unit": {
2026-06-20T03:13:21.2437808Z           "complete": true,
2026-06-20T03:13:21.2438054Z           "evidence": [
2026-06-20T03:13:21.2438283Z             {
2026-06-20T03:13:21.2438527Z               "path": "crates/spt/src/picker/data.rs",
2026-06-20T03:13:21.2438808Z               "line": 400
2026-06-20T03:13:21.2439113Z             }
2026-06-20T03:13:21.2439313Z           ]
2026-06-20T03:13:21.2439514Z         }
2026-06-20T03:13:21.2439704Z       }
2026-06-20T03:13:21.2439890Z     },
2026-06-20T03:13:21.2440086Z     {
2026-06-20T03:13:21.2440309Z       "id": "REQ-PICKER-ONLINE-ACTION",
2026-06-20T03:13:21.2442128Z       "title": "The `spt endpoint run` picker shows the correct action for an ALREADY-ONLINE endpoint — Attach, NOT 'Start now' (operator-raised v0.12.0 real-harness finding). Symptom: the picker offers 'Start now' for endpoints that are already online. ROOT TBD — investigate the status→action mapping (v0.10.0 PICKER-1 four-state status, picker/model.rs): is it reading live/online state correctly, or rendering stale/wedged broker state (i.e. partly a symptom of the broker wedge / status=online latch)? Fix so online → Attach. (v0.12.1)",
2026-06-20T03:13:21.2443648Z       "requiredStages": [
2026-06-20T03:13:21.2443880Z         "impl",
2026-06-20T03:13:21.2444087Z         "unit"
2026-06-20T03:13:21.2444292Z       ],
2026-06-20T03:13:21.2444491Z       "stages": {
2026-06-20T03:13:21.2444692Z         "doc": {
2026-06-20T03:13:21.2444903Z           "complete": false,
2026-06-20T03:13:21.2445135Z           "evidence": []
2026-06-20T03:13:21.2445359Z         },
2026-06-20T03:13:21.2445544Z         "impl": {
2026-06-20T03:13:21.2445771Z           "complete": true,
2026-06-20T03:13:21.2446009Z           "evidence": [
2026-06-20T03:13:21.2446229Z             {
2026-06-20T03:13:21.2446476Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T03:13:21.2446772Z               "line": 654
2026-06-20T03:13:21.2446992Z             }
2026-06-20T03:13:21.2447183Z           ]
2026-06-20T03:13:21.2447382Z         },
2026-06-20T03:13:21.2447573Z         "int": {
2026-06-20T03:13:21.2447794Z           "complete": false,
2026-06-20T03:13:21.2448227Z           "evidence": []
2026-06-20T03:13:21.2448464Z         },
2026-06-20T03:13:21.2448757Z         "unit": {
2026-06-20T03:13:21.2449043Z           "complete": true,
2026-06-20T03:13:21.2449276Z           "evidence": [
2026-06-20T03:13:21.2449506Z             {
2026-06-20T03:13:21.2449740Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T03:13:21.2450027Z               "line": 1078
2026-06-20T03:13:21.2450249Z             },
2026-06-20T03:13:21.2450450Z             {
2026-06-20T03:13:21.2450680Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T03:13:21.2450959Z               "line": 1092
2026-06-20T03:13:21.2451176Z             }
2026-06-20T03:13:21.2451363Z           ]
2026-06-20T03:13:21.2451562Z         }
2026-06-20T03:13:21.2451744Z       }
2026-06-20T03:13:21.2451940Z     },
2026-06-20T03:13:21.2452130Z     {
2026-06-20T03:13:21.2452345Z       "id": "REQ-PICKER-UX-V013",
2026-06-20T03:13:21.2454121Z       "title": "`spt endpoint run` picker UX (v0.13.0 operator dogfooding): (1) SKIP the first screen — open directly on 'Pick existing'; `n` jumps to 'Create new'. (2) AUTO-ATTACH after both Start-new AND Resume-from-history (both currently don't attach and show no stdout); add an `h` shortcut to run headless (no attach). (3) 'controlled by' shows the node NAME (node_label_display), not the raw hex. (4) Clean up Start-new output — drop the Rust `pid=Some(142748)` leak and the 'harness binds its perch on startup' internals; user-friendly, not a process log. (v0.13.0)",
2026-06-20T03:13:21.2455633Z       "requiredStages": [],
2026-06-20T03:13:21.2455872Z       "stages": {
2026-06-20T03:13:21.2456085Z         "doc": {
2026-06-20T03:13:21.2456303Z           "complete": false,
2026-06-20T03:13:21.2456542Z           "evidence": []
2026-06-20T03:13:21.2456765Z         },
2026-06-20T03:13:21.2456965Z         "impl": {
2026-06-20T03:13:21.2457176Z           "complete": false,
2026-06-20T03:13:21.2457424Z           "evidence": []
2026-06-20T03:13:21.2457661Z         },
2026-06-20T03:13:21.2457857Z         "int": {
2026-06-20T03:13:21.2458068Z           "complete": false,
2026-06-20T03:13:21.2458306Z           "evidence": []
2026-06-20T03:13:21.2458529Z         },
2026-06-20T03:13:21.2458731Z         "unit": {
2026-06-20T03:13:21.2459015Z           "complete": false,
2026-06-20T03:13:21.2459245Z           "evidence": []
2026-06-20T03:13:21.2459465Z         }
2026-06-20T03:13:21.2459681Z       }
2026-06-20T03:13:21.2459875Z     },
2026-06-20T03:13:21.2460071Z     {
2026-06-20T03:13:21.2460277Z       "id": "REQ-PRES-1",
2026-06-20T03:13:21.2461803Z       "title": "Presence resolution: the presence datum (last_active_node, last_active_endpoint, ts) gossiped subnet-wide via the agent-interaction heartbeat (rides registry distribution, visibility-gated) + one first-class most-recently-active resolution API consumed by notif first-fire, update-consent delivery, consent escalation, and shell wake resolution (M5 scope decision 1: resolution only — the PresenceChannel endpoint stays deferred)",
2026-06-20T03:13:21.2463100Z       "requiredStages": [
2026-06-20T03:13:21.2463339Z         "impl",
2026-06-20T03:13:21.2463540Z         "unit",
2026-06-20T03:13:21.2463754Z         "int"
2026-06-20T03:13:21.2463948Z       ],
2026-06-20T03:13:21.2464131Z       "stages": {
2026-06-20T03:13:21.2464334Z         "doc": {
2026-06-20T03:13:21.2464545Z           "complete": true,
2026-06-20T03:13:21.2464778Z           "evidence": [
2026-06-20T03:13:21.2464997Z             {
2026-06-20T03:13:21.2465231Z               "path": "docs/DEFERRED.md",
2026-06-20T03:13:21.2465493Z               "line": 11
2026-06-20T03:13:21.2465713Z             }
2026-06-20T03:13:21.2465917Z           ]
2026-06-20T03:13:21.2466109Z         },
2026-06-20T03:13:21.2466323Z         "impl": {
2026-06-20T03:13:21.2466551Z           "complete": true,
2026-06-20T03:13:21.2466787Z           "evidence": [
2026-06-20T03:13:21.2467006Z             {
2026-06-20T03:13:21.2467248Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-20T03:13:21.2467698Z               "line": 515
2026-06-20T03:13:21.2467922Z             },
2026-06-20T03:13:21.2468246Z             {
2026-06-20T03:13:21.2468489Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-20T03:13:21.2468780Z               "line": 567
2026-06-20T03:13:21.2469109Z             },
2026-06-20T03:13:21.2469314Z             {
2026-06-20T03:13:21.2469551Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T03:13:21.2469835Z               "line": 188
2026-06-20T03:13:21.2470068Z             },
2026-06-20T03:13:21.2470265Z             {
2026-06-20T03:13:21.2470493Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T03:13:21.2470769Z               "line": 214
2026-06-20T03:13:21.2470979Z             },
2026-06-20T03:13:21.2471185Z             {
2026-06-20T03:13:21.2471428Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-20T03:13:21.2471713Z               "line": 28
2026-06-20T03:13:21.2471947Z             },
2026-06-20T03:13:21.2472128Z             {
2026-06-20T03:13:21.2472363Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-20T03:13:21.2472663Z               "line": 105
2026-06-20T03:13:21.2472879Z             },
2026-06-20T03:13:21.2473080Z             {
2026-06-20T03:13:21.2473316Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-20T03:13:21.2473598Z               "line": 161
2026-06-20T03:13:21.2473823Z             },
2026-06-20T03:13:21.2474019Z             {
2026-06-20T03:13:21.2474261Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-20T03:13:21.2474543Z               "line": 180
2026-06-20T03:13:21.2474753Z             },
2026-06-20T03:13:21.2474951Z             {
2026-06-20T03:13:21.2475204Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.2475495Z               "line": 421
2026-06-20T03:13:21.2475710Z             },
2026-06-20T03:13:21.2475910Z             {
2026-06-20T03:13:21.2476153Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T03:13:21.2476445Z               "line": 289
2026-06-20T03:13:21.2476669Z             },
2026-06-20T03:13:21.2476864Z             {
2026-06-20T03:13:21.2477106Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T03:13:21.2477390Z               "line": 336
2026-06-20T03:13:21.2477610Z             },
2026-06-20T03:13:21.2477809Z             {
2026-06-20T03:13:21.2478043Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T03:13:21.2478330Z               "line": 362
2026-06-20T03:13:21.2478559Z             },
2026-06-20T03:13:21.2478753Z             {
2026-06-20T03:13:21.2479077Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.2479358Z               "line": 100
2026-06-20T03:13:21.2479574Z             }
2026-06-20T03:13:21.2479770Z           ]
2026-06-20T03:13:21.2479968Z         },
2026-06-20T03:13:21.2480149Z         "int": {
2026-06-20T03:13:21.2480361Z           "complete": true,
2026-06-20T03:13:21.2480591Z           "evidence": [
2026-06-20T03:13:21.2480801Z             {
2026-06-20T03:13:21.2481034Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-20T03:13:21.2481325Z               "line": 563
2026-06-20T03:13:21.2481530Z             },
2026-06-20T03:13:21.2481731Z             {
2026-06-20T03:13:21.2481964Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T03:13:21.2482240Z               "line": 747
2026-06-20T03:13:21.2482455Z             },
2026-06-20T03:13:21.2482645Z             {
2026-06-20T03:13:21.2482885Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T03:13:21.2483186Z               "line": 1165
2026-06-20T03:13:21.2483406Z             }
2026-06-20T03:13:21.2483606Z           ]
2026-06-20T03:13:21.2483792Z         },
2026-06-20T03:13:21.2483988Z         "unit": {
2026-06-20T03:13:21.2484206Z           "complete": true,
2026-06-20T03:13:21.2484426Z           "evidence": [
2026-06-20T03:13:21.2484641Z             {
2026-06-20T03:13:21.2484984Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T03:13:21.2485262Z               "line": 674
2026-06-20T03:13:21.2485584Z             },
2026-06-20T03:13:21.2485778Z             {
2026-06-20T03:13:21.2486008Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-20T03:13:21.2486294Z               "line": 238
2026-06-20T03:13:21.2486519Z             },
2026-06-20T03:13:21.2486713Z             {
2026-06-20T03:13:21.2486938Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-20T03:13:21.2487215Z               "line": 269
2026-06-20T03:13:21.2487429Z             },
2026-06-20T03:13:21.2487633Z             {
2026-06-20T03:13:21.2487861Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-20T03:13:21.2488136Z               "line": 305
2026-06-20T03:13:21.2488340Z             },
2026-06-20T03:13:21.2488532Z             {
2026-06-20T03:13:21.2488757Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-20T03:13:21.2489100Z               "line": 336
2026-06-20T03:13:21.2489318Z             },
2026-06-20T03:13:21.2489519Z             {
2026-06-20T03:13:21.2489772Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.2490068Z               "line": 1217
2026-06-20T03:13:21.2490287Z             },
2026-06-20T03:13:21.2490477Z             {
2026-06-20T03:13:21.2490709Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.2490989Z               "line": 1163
2026-06-20T03:13:21.2491207Z             }
2026-06-20T03:13:21.2491408Z           ]
2026-06-20T03:13:21.2491589Z         }
2026-06-20T03:13:21.2491786Z       }
2026-06-20T03:13:21.2491981Z     },
2026-06-20T03:13:21.2492166Z     {
2026-06-20T03:13:21.2492363Z       "id": "REQ-RC-1",
2026-06-20T03:13:21.2494534Z       "title": "`spt rc <id>` — user CLI attaching a local terminal to a broker-held PTY, reusing the cross-node attach machinery (attach.rs request_attach → send_attach_input pump, spt-net AttachRecord codec); local attach is the degenerate single-node case of the cross-node path (rides REQ-TERM-3 byte-stream streaming). Read-only `--view` (watch, no stdin forwarded). Clean detach that does NOT terminate the broker-held session (KNOWN-HAZARDS: PTY ownership stays with the broker; no termination on detach). Explicit detach keybind that cannot collide with harness passthrough input (legacy capsule used a ctrl-b prefix); documented. ConPTY DSR auto-answer in the attach reader (hazard 5.5).",
2026-06-20T03:13:21.2496439Z       "requiredStages": [
2026-06-20T03:13:21.2496668Z         "impl",
2026-06-20T03:13:21.2496874Z         "unit",
2026-06-20T03:13:21.2497074Z         "int"
2026-06-20T03:13:21.2497264Z       ],
2026-06-20T03:13:21.2497455Z       "stages": {
2026-06-20T03:13:21.2497665Z         "doc": {
2026-06-20T03:13:21.2497884Z           "complete": false,
2026-06-20T03:13:21.2498118Z           "evidence": []
2026-06-20T03:13:21.2498336Z         },
2026-06-20T03:13:21.2498529Z         "impl": {
2026-06-20T03:13:21.2498749Z           "complete": true,
2026-06-20T03:13:21.2499045Z           "evidence": [
2026-06-20T03:13:21.2499268Z             {
2026-06-20T03:13:21.2499506Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T03:13:21.2499797Z               "line": 896
2026-06-20T03:13:21.2500017Z             },
2026-06-20T03:13:21.2500222Z             {
2026-06-20T03:13:21.2500446Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.2500722Z               "line": 1877
2026-06-20T03:13:21.2500939Z             },
2026-06-20T03:13:21.2501136Z             {
2026-06-20T03:13:21.2501368Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T03:13:21.2501650Z               "line": 967
2026-06-20T03:13:21.2501869Z             },
2026-06-20T03:13:21.2502069Z             {
2026-06-20T03:13:21.2502289Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T03:13:21.2502575Z               "line": 1001
2026-06-20T03:13:21.2502794Z             },
2026-06-20T03:13:21.2503128Z             {
2026-06-20T03:13:21.2503352Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.2503703Z               "line": 22
2026-06-20T03:13:21.2503926Z             },
2026-06-20T03:13:21.2504116Z             {
2026-06-20T03:13:21.2504330Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.2504593Z               "line": 524
2026-06-20T03:13:21.2504803Z             }
2026-06-20T03:13:21.2505002Z           ]
2026-06-20T03:13:21.2505184Z         },
2026-06-20T03:13:21.2505365Z         "int": {
2026-06-20T03:13:21.2505566Z           "complete": true,
2026-06-20T03:13:21.2505804Z           "evidence": [
2026-06-20T03:13:21.2506015Z             {
2026-06-20T03:13:21.2506247Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T03:13:21.2506527Z               "line": 258
2026-06-20T03:13:21.2506747Z             },
2026-06-20T03:13:21.2506942Z             {
2026-06-20T03:13:21.2507171Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T03:13:21.2507467Z               "line": 285
2026-06-20T03:13:21.2507682Z             },
2026-06-20T03:13:21.2507886Z             {
2026-06-20T03:13:21.2508111Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T03:13:21.2508391Z               "line": 413
2026-06-20T03:13:21.2508608Z             }
2026-06-20T03:13:21.2508806Z           ]
2026-06-20T03:13:21.2509070Z         },
2026-06-20T03:13:21.2509257Z         "unit": {
2026-06-20T03:13:21.2509475Z           "complete": true,
2026-06-20T03:13:21.2509700Z           "evidence": [
2026-06-20T03:13:21.2509906Z             {
2026-06-20T03:13:21.2510138Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T03:13:21.2510410Z               "line": 1327
2026-06-20T03:13:21.2510629Z             },
2026-06-20T03:13:21.2510826Z             {
2026-06-20T03:13:21.2511039Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.2511301Z               "line": 942
2026-06-20T03:13:21.2511532Z             },
2026-06-20T03:13:21.2511729Z             {
2026-06-20T03:13:21.2511947Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.2512205Z               "line": 971
2026-06-20T03:13:21.2512424Z             },
2026-06-20T03:13:21.2512614Z             {
2026-06-20T03:13:21.2512829Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.2513073Z               "line": 984
2026-06-20T03:13:21.2513292Z             }
2026-06-20T03:13:21.2513478Z           ]
2026-06-20T03:13:21.2513654Z         }
2026-06-20T03:13:21.2513844Z       }
2026-06-20T03:13:21.2514027Z     },
2026-06-20T03:13:21.2514207Z     {
2026-06-20T03:13:21.2514420Z       "id": "REQ-RC-KEY-VT-TRANSLATE",
2026-06-20T03:13:21.2520527Z       "title": "On Windows, `spt rc` translates CONSOLE KEY EVENTS to standard xterm VT so ALL keys reach the hosted harness — arrows/Home/End/PgUp/PgDn/Insert/Delete/F-keys, every modifier combo, Backspace/Ctrl+Backspace — not just the byte-emitting ones. ROOT (operator HITL, doyle /diagnose): `spt rc` reads raw STDIN BYTES (spawn_stdin_reader, std::io::stdin().read); on the Windows LEGACY console (no ENABLE_VIRTUAL_TERMINAL_INPUT) the special keys produce console KEY_EVENTs, NOT stdin bytes, so the byte-pump sees nothing → those keys are DEAD. Enabling ENABLE_VIRTUAL_TERMINAL_INPUT was rejected (W7 dc07c39): on Windows Terminal it yields harness-specific win32-input-mode + broke ctrl-b detach. FIX (agnostic, full fidelity): on Windows, replace the stdin byte-read with a crossterm EVENT source (crossterm 0.28 already a dep; the picker already reads events) and translate each KeyEvent → STANDARD xterm VT bytes via a PURE translate_key_event(KeyEvent)->Vec<u8> (copy a known-correct xterm table verbatim, ADR-0001 spirit), forwarded through the SAME rc pump — the harness receives ordinary xterm VT (harness-AGNOSTIC, no win32-input-mode). Press-only (drop Repeat/Release). Detach stays the ctrl-b+'d' PREFIX, event-sourced (doyle Option B): Ctrl+B arms; armed+plain-'d'⇒Detach; armed+Ctrl+B⇒emit literal 0x02; armed+other⇒0x02 then translate(other). Non-tty stdin (piped/tests) → FALL BACK to the byte-read path (keeps e2e byte-injection working). UNIX UNCHANGED (its raw-mode byte stream already delivers proper VT; cfg-split, zero Unix regression). SUPERSEDES the W7 normalize_key_byte swap on Windows — the translator emits 0x7f for Backspace and 0x08 for Ctrl+Backspace natively (REQ-HAZARD-RC-INPUT-KEY-ENCODING folded in). NO int (a live interactive console can't be driven in CI — HITL, REQ-RUN-PICKER/RC-1 precedent); the exhaustive non-vacuous translate_key_event mapping unit + the event-detach unit ARE the surface. (v0.13.0)",
2026-06-20T03:13:21.2525900Z       "requiredStages": [
2026-06-20T03:13:21.2526132Z         "doc",
2026-06-20T03:13:21.2526333Z         "impl",
2026-06-20T03:13:21.2526530Z         "unit"
2026-06-20T03:13:21.2526724Z       ],
2026-06-20T03:13:21.2526919Z       "stages": {
2026-06-20T03:13:21.2527125Z         "doc": {
2026-06-20T03:13:21.2527339Z           "complete": true,
2026-06-20T03:13:21.2527568Z           "evidence": [
2026-06-20T03:13:21.2527796Z             {
2026-06-20T03:13:21.2527996Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.2528249Z               "line": 345
2026-06-20T03:13:21.2528459Z             },
2026-06-20T03:13:21.2528649Z             {
2026-06-20T03:13:21.2528860Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T03:13:21.2529183Z               "line": 440
2026-06-20T03:13:21.2529399Z             }
2026-06-20T03:13:21.2529593Z           ]
2026-06-20T03:13:21.2534194Z         },
2026-06-20T03:13:21.2534441Z         "impl": {
2026-06-20T03:13:21.2534674Z           "complete": true,
2026-06-20T03:13:21.2534909Z           "evidence": [
2026-06-20T03:13:21.2535134Z             {
2026-06-20T03:13:21.2535346Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.2535616Z               "line": 81
2026-06-20T03:13:21.2535835Z             },
2026-06-20T03:13:21.2536025Z             {
2026-06-20T03:13:21.2536250Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.2536555Z               "line": 140
2026-06-20T03:13:21.2536780Z             },
2026-06-20T03:13:21.2536974Z             {
2026-06-20T03:13:21.2537188Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.2537452Z               "line": 155
2026-06-20T03:13:21.2537666Z             },
2026-06-20T03:13:21.2537860Z             {
2026-06-20T03:13:21.2538077Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.2538337Z               "line": 170
2026-06-20T03:13:21.2538546Z             },
2026-06-20T03:13:21.2538748Z             {
2026-06-20T03:13:21.2539034Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.2539291Z               "line": 219
2026-06-20T03:13:21.2539519Z             }
2026-06-20T03:13:21.2539715Z           ]
2026-06-20T03:13:21.2539911Z         },
2026-06-20T03:13:21.2540101Z         "int": {
2026-06-20T03:13:21.2540326Z           "complete": false,
2026-06-20T03:13:21.2540563Z           "evidence": []
2026-06-20T03:13:21.2540785Z         },
2026-06-20T03:13:21.2540986Z         "unit": {
2026-06-20T03:13:21.2541195Z           "complete": true,
2026-06-20T03:13:21.2541423Z           "evidence": [
2026-06-20T03:13:21.2541634Z             {
2026-06-20T03:13:21.2541848Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.2542100Z               "line": 999
2026-06-20T03:13:21.2542320Z             },
2026-06-20T03:13:21.2542512Z             {
2026-06-20T03:13:21.2542730Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.2542982Z               "line": 1114
2026-06-20T03:13:21.2543203Z             }
2026-06-20T03:13:21.2543396Z           ]
2026-06-20T03:13:21.2543595Z         }
2026-06-20T03:13:21.2543785Z       }
2026-06-20T03:13:21.2543985Z     },
2026-06-20T03:13:21.2544172Z     {
2026-06-20T03:13:21.2544371Z       "id": "REQ-RC-WIN-PASTE",
2026-06-20T03:13:21.2549351Z       "title": "In an `spt rc` session neither ctrl+V nor right-click pastes (CC explicitly supports ctrl+V). ROOT (doyle /diagnose): RawGuard does only enable_raw_mode (no bracketed paste / no mouse capture / no clipboard interception); the Windows console delivers a paste as synthetic per-char KEY EVENTs (no crossterm Event::Paste), and ctrl+V translates to bare ^V forwarded to CC — but CC runs DAEMON-SIDE with NO access to the operator's LOCAL clipboard, so remote paste is fundamentally CLIENT-ORIGINATED. A multi-line paste-as-keys also becomes a \\r submit-storm. FIX (doyle design, V0.13.0-P1-RC-PASTE-DESIGN.md, cfg(windows), folds into the bug-2 event path): on a paste gesture rc reads the LOCAL clipboard + forwards a BRACKETED PASTE (ESC[200~ + content + ESC[201~); CC has bracketed-paste mode on (its TUI sets ESC[?2004h) so it treats it as a paste — content intact, no submit-storm, harness-AGNOSTIC. ctrl+V: intercept Char('v')+CONTROL in the event loop -> read_clipboard -> bracketed paste. Right-click: RawGuard also EnableMouseCapture (disables console QuickEdit + enables ENABLE_MOUSE_INPUT so right-click surfaces as Event::Mouse on legacy cmd/powershell) -> right-button -> read_clipboard -> bracketed paste; DROP all other mouse (CC has no mouse features, operator-confirmed, so capture costs nothing). read_clipboard = clipboard-win crate (cfg(windows), minimal); empty/failed = clean no-op. Content forwarded VERBATIM (literal pasted text, no per-char translation). Unix UNCHANGED (its terminal pastes natively through the byte pump). DEPENDS ON P0 (a paste chunk must not wedge the broker). (v0.13.0)",
2026-06-20T03:13:21.2553947Z       "requiredStages": [
2026-06-20T03:13:21.2554146Z         "doc",
2026-06-20T03:13:21.2554322Z         "impl",
2026-06-20T03:13:21.2554484Z         "unit"
2026-06-20T03:13:21.2554655Z       ],
2026-06-20T03:13:21.2554818Z       "stages": {
2026-06-20T03:13:21.2554975Z         "doc": {
2026-06-20T03:13:21.2555156Z           "complete": true,
2026-06-20T03:13:21.2555352Z           "evidence": [
2026-06-20T03:13:21.2555542Z             {
2026-06-20T03:13:21.2555738Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T03:13:21.2555973Z               "line": 447
2026-06-20T03:13:21.2556177Z             }
2026-06-20T03:13:21.2556344Z           ]
2026-06-20T03:13:21.2556513Z         },
2026-06-20T03:13:21.2556666Z         "impl": {
2026-06-20T03:13:21.2556840Z           "complete": true,
2026-06-20T03:13:21.2557032Z           "evidence": [
2026-06-20T03:13:21.2557212Z             {
2026-06-20T03:13:21.2557399Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.2557628Z               "line": 250
2026-06-20T03:13:21.2557818Z             },
2026-06-20T03:13:21.2557985Z             {
2026-06-20T03:13:21.2558166Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.2558257Z               "line": 264
2026-06-20T03:13:21.2558328Z             },
2026-06-20T03:13:21.2558433Z             {
2026-06-20T03:13:21.2558534Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.2558657Z               "line": 275
2026-06-20T03:13:21.2558743Z             },
2026-06-20T03:13:21.2558826Z             {
2026-06-20T03:13:21.2559030Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.2559111Z               "line": 286
2026-06-20T03:13:21.2559207Z             },
2026-06-20T03:13:21.2559291Z             {
2026-06-20T03:13:21.2559400Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.2559486Z               "line": 300
2026-06-20T03:13:21.2559573Z             },
2026-06-20T03:13:21.2559658Z             {
2026-06-20T03:13:21.2559753Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.2559840Z               "line": 311
2026-06-20T03:13:21.2559921Z             }
2026-06-20T03:13:21.2560005Z           ]
2026-06-20T03:13:21.2560092Z         },
2026-06-20T03:13:21.2560178Z         "int": {
2026-06-20T03:13:21.2560278Z           "complete": false,
2026-06-20T03:13:21.2560358Z           "evidence": []
2026-06-20T03:13:21.2560445Z         },
2026-06-20T03:13:21.2560526Z         "unit": {
2026-06-20T03:13:21.2560616Z           "complete": true,
2026-06-20T03:13:21.2560707Z           "evidence": [
2026-06-20T03:13:21.2560902Z             {
2026-06-20T03:13:21.2561012Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.2561198Z               "line": 1190
2026-06-20T03:13:21.2561293Z             },
2026-06-20T03:13:21.2561385Z             {
2026-06-20T03:13:21.2561485Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.2561578Z               "line": 1211
2026-06-20T03:13:21.2561659Z             },
2026-06-20T03:13:21.2561755Z             {
2026-06-20T03:13:21.2561853Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.2561934Z               "line": 1228
2026-06-20T03:13:21.2562025Z             },
2026-06-20T03:13:21.2562101Z             {
2026-06-20T03:13:21.2562205Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.2562291Z               "line": 1249
2026-06-20T03:13:21.2562377Z             }
2026-06-20T03:13:21.2562463Z           ]
2026-06-20T03:13:21.2562553Z         }
2026-06-20T03:13:21.2562634Z       }
2026-06-20T03:13:21.2562712Z     },
2026-06-20T03:13:21.2562807Z     {
2026-06-20T03:13:21.2562911Z       "id": "REQ-RCVIEW-1",
2026-06-20T03:13:21.2567391Z       "title": "Remote-attach controller/viewer model (CONTEXT.md:317): a session's broker OutputLog serves ONE interactive controller (input + EXCLUSIVE PTY resize; its viewport sets the size, sent on attach + every window change via crossterm Event::Resize) plus ANY NUMBER of read-only `--view` attachers (output-only, no input, no resize; client-side letterbox — center+pad when larger, clip+1-line indicator when smaller; only the local ctrl-b d detach chord). Attach intent is three-valued (`Viewer | Control | Take`, wire-default Control): Control to a FREE endpoint becomes controller, Control to a CONTROLLED endpoint is REFUSED with guidance (`--view`/`--take`) — never auto-viewer, never silent-displace. Wire adds (additive, N-1 skip-unknown): `Request.intent`, `Resize{rows,cols}` (controller-only), `Size{rows,cols}` (→viewer), `Displaced{by}` (→displaced controller). The brain-resume cursor (delivered_through, ADR-0018) tracks the CONTROLLER ONLY; viewers replay from their own from_seq and never move it. Dormancy keys on the controller ONLY: controller attach wakes / controller detach goes dormant (even with viewers present); viewer attach/detach is wake-neutral and may watch a dormant endpoint as-is. v1: viewing is gated identically to driving — a viewer runs the same access_check(Unsolicited) as a controller (watching reveals full session contents = a real disclosure); a lighter distinct watch-gate is deferred to cross-subnet/finer-consent (CONTEXT.md:317 'driving ≠ watching' = the future seam).",
2026-06-20T03:13:21.2567588Z       "requiredStages": [
2026-06-20T03:13:21.2567687Z         "doc",
2026-06-20T03:13:21.2567778Z         "impl",
2026-06-20T03:13:21.2567859Z         "unit",
2026-06-20T03:13:21.2567945Z         "int"
2026-06-20T03:13:21.2568025Z       ],
2026-06-20T03:13:21.2568107Z       "stages": {
2026-06-20T03:13:21.2568183Z         "doc": {
2026-06-20T03:13:21.2568283Z           "complete": true,
2026-06-20T03:13:21.2568393Z           "evidence": [
2026-06-20T03:13:21.2568479Z             {
2026-06-20T03:13:21.2568593Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.2568678Z               "line": 342
2026-06-20T03:13:21.2568761Z             }
2026-06-20T03:13:21.2568846Z           ]
2026-06-20T03:13:21.2568932Z         },
2026-06-20T03:13:21.2569109Z         "impl": {
2026-06-20T03:13:21.2569194Z           "complete": true,
2026-06-20T03:13:21.2569284Z           "evidence": [
2026-06-20T03:13:21.2569366Z             {
2026-06-20T03:13:21.2569499Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-20T03:13:21.2569585Z               "line": 345
2026-06-20T03:13:21.2569677Z             },
2026-06-20T03:13:21.2569767Z             {
2026-06-20T03:13:21.2569889Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.2569969Z               "line": 562
2026-06-20T03:13:21.2570056Z             },
2026-06-20T03:13:21.2570147Z             {
2026-06-20T03:13:21.2570385Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.2570490Z               "line": 573
2026-06-20T03:13:21.2570667Z             },
2026-06-20T03:13:21.2570752Z             {
2026-06-20T03:13:21.2570876Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-20T03:13:21.2570962Z               "line": 41
2026-06-20T03:13:21.2571048Z             },
2026-06-20T03:13:21.2571133Z             {
2026-06-20T03:13:21.2571267Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-20T03:13:21.2571358Z               "line": 62
2026-06-20T03:13:21.2571439Z             },
2026-06-20T03:13:21.2571525Z             {
2026-06-20T03:13:21.2571636Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T03:13:21.2571721Z               "line": 309
2026-06-20T03:13:21.2571810Z             },
2026-06-20T03:13:21.2571897Z             {
2026-06-20T03:13:21.2572002Z               "path": "crates/spt/src/rc.rs",
2026-06-20T03:13:21.2572087Z               "line": 524
2026-06-20T03:13:21.2572177Z             }
2026-06-20T03:13:21.2572253Z           ]
2026-06-20T03:13:21.2572339Z         },
2026-06-20T03:13:21.2572423Z         "int": {
2026-06-20T03:13:21.2572522Z           "complete": true,
2026-06-20T03:13:21.2572618Z           "evidence": [
2026-06-20T03:13:21.2572705Z             {
2026-06-20T03:13:21.2572827Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T03:13:21.2572914Z               "line": 913
2026-06-20T03:13:21.2573005Z             },
2026-06-20T03:13:21.2573090Z             {
2026-06-20T03:13:21.2573214Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T03:13:21.2573315Z               "line": 953
2026-06-20T03:13:21.2573433Z             },
2026-06-20T03:13:21.2573519Z             {
2026-06-20T03:13:21.2573639Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T03:13:21.2573739Z               "line": 1000
2026-06-20T03:13:21.2573829Z             },
2026-06-20T03:13:21.2573915Z             {
2026-06-20T03:13:21.2574044Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T03:13:21.2574129Z               "line": 1112
2026-06-20T03:13:21.2574221Z             }
2026-06-20T03:13:21.2574296Z           ]
2026-06-20T03:13:21.2574387Z         },
2026-06-20T03:13:21.2574473Z         "unit": {
2026-06-20T03:13:21.2574569Z           "complete": true,
2026-06-20T03:13:21.2574672Z           "evidence": [
2026-06-20T03:13:21.2574754Z             {
2026-06-20T03:13:21.2574898Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-20T03:13:21.2574996Z               "line": 175
2026-06-20T03:13:21.2575072Z             },
2026-06-20T03:13:21.2575149Z             {
2026-06-20T03:13:21.2575267Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-20T03:13:21.2575356Z               "line": 195
2026-06-20T03:13:21.2575442Z             }
2026-06-20T03:13:21.2575529Z           ]
2026-06-20T03:13:21.2575614Z         }
2026-06-20T03:13:21.2575704Z       }
2026-06-20T03:13:21.2575791Z     },
2026-06-20T03:13:21.2575876Z     {
2026-06-20T03:13:21.2575971Z       "id": "REQ-REACH-1",
2026-06-20T03:13:21.2576120Z       "title": "Off-node remote-drive detection + file transfer",
2026-06-20T03:13:21.2576234Z       "requiredStages": [
2026-06-20T03:13:21.2576319Z         "impl",
2026-06-20T03:13:21.2576410Z         "unit",
2026-06-20T03:13:21.2576497Z         "int"
2026-06-20T03:13:21.2576582Z       ],
2026-06-20T03:13:21.2576672Z       "stages": {
2026-06-20T03:13:21.2576759Z         "doc": {
2026-06-20T03:13:21.2576858Z           "complete": false,
2026-06-20T03:13:21.2576953Z           "evidence": []
2026-06-20T03:13:21.2577050Z         },
2026-06-20T03:13:21.2577136Z         "impl": {
2026-06-20T03:13:21.2577225Z           "complete": true,
2026-06-20T03:13:21.2577316Z           "evidence": [
2026-06-20T03:13:21.2577398Z             {
2026-06-20T03:13:21.2577525Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.2577616Z               "line": 562
2026-06-20T03:13:21.2577787Z             },
2026-06-20T03:13:21.2577871Z             {
2026-06-20T03:13:21.2577994Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-20T03:13:21.2578153Z               "line": 76
2026-06-20T03:13:21.2578242Z             },
2026-06-20T03:13:21.2578328Z             {
2026-06-20T03:13:21.2578448Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-20T03:13:21.2578533Z               "line": 222
2026-06-20T03:13:21.2578619Z             },
2026-06-20T03:13:21.2578701Z             {
2026-06-20T03:13:21.2578820Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-20T03:13:21.2578905Z               "line": 422
2026-06-20T03:13:21.2579054Z             },
2026-06-20T03:13:21.2579129Z             {
2026-06-20T03:13:21.2579244Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-20T03:13:21.2579345Z               "line": 529
2026-06-20T03:13:21.2579434Z             },
2026-06-20T03:13:21.2579544Z             {
2026-06-20T03:13:21.2579660Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-20T03:13:21.2579763Z               "line": 39
2026-06-20T03:13:21.2579844Z             },
2026-06-20T03:13:21.2579932Z             {
2026-06-20T03:13:21.2580050Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T03:13:21.2580131Z               "line": 301
2026-06-20T03:13:21.2580212Z             },
2026-06-20T03:13:21.2580289Z             {
2026-06-20T03:13:21.2580420Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-20T03:13:21.2580511Z               "line": 88
2026-06-20T03:13:21.2580602Z             },
2026-06-20T03:13:21.2580684Z             {
2026-06-20T03:13:21.2580797Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-20T03:13:21.2580893Z               "line": 98
2026-06-20T03:13:21.2580974Z             },
2026-06-20T03:13:21.2581060Z             {
2026-06-20T03:13:21.2581183Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.2581280Z               "line": 233
2026-06-20T03:13:21.2581365Z             }
2026-06-20T03:13:21.2581455Z           ]
2026-06-20T03:13:21.2581541Z         },
2026-06-20T03:13:21.2581622Z         "int": {
2026-06-20T03:13:21.2581727Z           "complete": true,
2026-06-20T03:13:21.2581822Z           "evidence": [
2026-06-20T03:13:21.2581910Z             {
2026-06-20T03:13:21.2582042Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-20T03:13:21.2582137Z               "line": 415
2026-06-20T03:13:21.2582220Z             },
2026-06-20T03:13:21.2582304Z             {
2026-06-20T03:13:21.2582428Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-20T03:13:21.2582520Z               "line": 520
2026-06-20T03:13:21.2582605Z             },
2026-06-20T03:13:21.2582690Z             {
2026-06-20T03:13:21.2582808Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T03:13:21.2582894Z               "line": 998
2026-06-20T03:13:21.2582978Z             },
2026-06-20T03:13:21.2583058Z             {
2026-06-20T03:13:21.2583169Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T03:13:21.2583270Z               "line": 1383
2026-06-20T03:13:21.2583364Z             }
2026-06-20T03:13:21.2583450Z           ]
2026-06-20T03:13:21.2583536Z         },
2026-06-20T03:13:21.2583621Z         "unit": {
2026-06-20T03:13:21.2583726Z           "complete": true,
2026-06-20T03:13:21.2583823Z           "evidence": [
2026-06-20T03:13:21.2583908Z             {
2026-06-20T03:13:21.2584026Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-20T03:13:21.2584104Z               "line": 639
2026-06-20T03:13:21.2584189Z             },
2026-06-20T03:13:21.2584270Z             {
2026-06-20T03:13:21.2584399Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-20T03:13:21.2584480Z               "line": 660
2026-06-20T03:13:21.2584571Z             },
2026-06-20T03:13:21.2584656Z             {
2026-06-20T03:13:21.2584781Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T03:13:21.2584876Z               "line": 768
2026-06-20T03:13:21.2585087Z             },
2026-06-20T03:13:21.2585171Z             {
2026-06-20T03:13:21.2585296Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-20T03:13:21.2585482Z               "line": 93
2026-06-20T03:13:21.2585562Z             },
2026-06-20T03:13:21.2585647Z             {
2026-06-20T03:13:21.2585771Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-20T03:13:21.2585859Z               "line": 224
2026-06-20T03:13:21.2585954Z             },
2026-06-20T03:13:21.2586046Z             {
2026-06-20T03:13:21.2586160Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-20T03:13:21.2586254Z               "line": 96
2026-06-20T03:13:21.2586346Z             },
2026-06-20T03:13:21.2586432Z             {
2026-06-20T03:13:21.2586546Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-20T03:13:21.2586641Z               "line": 146
2026-06-20T03:13:21.2586728Z             },
2026-06-20T03:13:21.2586814Z             {
2026-06-20T03:13:21.2586927Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T03:13:21.2587014Z               "line": 698
2026-06-20T03:13:21.2587104Z             },
2026-06-20T03:13:21.2587190Z             {
2026-06-20T03:13:21.2587310Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-20T03:13:21.2587395Z               "line": 118
2026-06-20T03:13:21.2587480Z             },
2026-06-20T03:13:21.2587561Z             {
2026-06-20T03:13:21.2587672Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-20T03:13:21.2587766Z               "line": 148
2026-06-20T03:13:21.2587848Z             },
2026-06-20T03:13:21.2587935Z             {
2026-06-20T03:13:21.2588063Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.2588147Z               "line": 928
2026-06-20T03:13:21.2588237Z             }
2026-06-20T03:13:21.2588318Z           ]
2026-06-20T03:13:21.2588408Z         }
2026-06-20T03:13:21.2588492Z       }
2026-06-20T03:13:21.2588574Z     },
2026-06-20T03:13:21.2588656Z     {
2026-06-20T03:13:21.2588746Z       "id": "REQ-REACH-2",
2026-06-20T03:13:21.2588913Z       "title": "Remote command execution (deferred, consent-gated)",
2026-06-20T03:13:21.2589070Z       "requiredStages": [],
2026-06-20T03:13:21.2589155Z       "stages": {
2026-06-20T03:13:21.2589237Z         "doc": {
2026-06-20T03:13:21.2589328Z           "complete": false,
2026-06-20T03:13:21.2589423Z           "evidence": []
2026-06-20T03:13:21.2589504Z         },
2026-06-20T03:13:21.2589600Z         "impl": {
2026-06-20T03:13:21.2589694Z           "complete": false,
2026-06-20T03:13:21.2589794Z           "evidence": []
2026-06-20T03:13:21.2589877Z         },
2026-06-20T03:13:21.2589952Z         "int": {
2026-06-20T03:13:21.2590048Z           "complete": false,
2026-06-20T03:13:21.2590133Z           "evidence": []
2026-06-20T03:13:21.2590220Z         },
2026-06-20T03:13:21.2590295Z         "unit": {
2026-06-20T03:13:21.2590391Z           "complete": false,
2026-06-20T03:13:21.2590482Z           "evidence": []
2026-06-20T03:13:21.2590568Z         }
2026-06-20T03:13:21.2590652Z       }
2026-06-20T03:13:21.2590734Z     },
2026-06-20T03:13:21.2590821Z     {
2026-06-20T03:13:21.2590935Z       "id": "REQ-READY-AGENT-RESUME",
2026-06-20T03:13:21.2594439Z       "title": "An offline ReadyAgent shows in `spt endpoint run`'s picker Resume-from-history and resumes correctly — closing the gap that today only LiveAgents do. ROOT: a harness-hosted ready bind (ReadyAgent::start_homed, ready.rs) writes info.json DIRECTLY and never appends the session ledger (unlike the shared establish_perch:250 live path), so a ready agent — though it has a session_id — produces ZERO ledger rows → the picker's offline+local Resume-from-history (which gates on ledger rows) never offers it. FIX (1): ledger the ready bind (ReadyAgent::start_homed → sessions::append Boot, mirroring establish_perch). FIX (2): `spt endpoint run --resume <session>` honors the adapter MANIFEST's endpoint TYPE — a ReadyAgent manifest (no [session.psyche_init]) resumes as a ready endpoint (poll listener, NO psyche-host); a LiveAgent (with psyche_init) as live. NO new bringup mode + NO picker changes (operator 2026-06-18): `spt endpoint run` is the spt-hosted ENDPOINT bringup for BOTH types, the type IS the adapter-manifest's concern (psyche-host already keys on psyche_init presence) — so (2) likely already holds; VERIFY at code, build only the residual. (v0.12.0)",
2026-06-20T03:13:21.2594778Z       "requiredStages": [
2026-06-20T03:13:21.2594863Z         "doc",
2026-06-20T03:13:21.2594959Z         "impl",
2026-06-20T03:13:21.2595036Z         "unit",
2026-06-20T03:13:21.2595121Z         "int"
2026-06-20T03:13:21.2595202Z       ],
2026-06-20T03:13:21.2595294Z       "stages": {
2026-06-20T03:13:21.2595375Z         "doc": {
2026-06-20T03:13:21.2595469Z           "complete": true,
2026-06-20T03:13:21.2595555Z           "evidence": [
2026-06-20T03:13:21.2595642Z             {
2026-06-20T03:13:21.2595745Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.2595836Z               "line": 372
2026-06-20T03:13:21.2595937Z             }
2026-06-20T03:13:21.2596018Z           ]
2026-06-20T03:13:21.2596103Z         },
2026-06-20T03:13:21.2596211Z         "impl": {
2026-06-20T03:13:21.2596308Z           "complete": true,
2026-06-20T03:13:21.2596401Z           "evidence": [
2026-06-20T03:13:21.2596481Z             {
2026-06-20T03:13:21.2596591Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-20T03:13:21.2596678Z               "line": 110
2026-06-20T03:13:21.2596768Z             }
2026-06-20T03:13:21.2596848Z           ]
2026-06-20T03:13:21.2596936Z         },
2026-06-20T03:13:21.2597021Z         "int": {
2026-06-20T03:13:21.2597111Z           "complete": true,
2026-06-20T03:13:21.2597197Z           "evidence": [
2026-06-20T03:13:21.2597278Z             {
2026-06-20T03:13:21.2597425Z               "path": "crates/spt/tests/ready_resume_ledger_e2e.rs",
2026-06-20T03:13:21.2597512Z               "line": 26
2026-06-20T03:13:21.2597593Z             }
2026-06-20T03:13:21.2597688Z           ]
2026-06-20T03:13:21.2597774Z         },
2026-06-20T03:13:21.2597860Z         "unit": {
2026-06-20T03:13:21.2597946Z           "complete": true,
2026-06-20T03:13:21.2598036Z           "evidence": [
2026-06-20T03:13:21.2598107Z             {
2026-06-20T03:13:21.2598228Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-20T03:13:21.2598317Z               "line": 320
2026-06-20T03:13:21.2598399Z             }
2026-06-20T03:13:21.2598485Z           ]
2026-06-20T03:13:21.2598557Z         }
2026-06-20T03:13:21.2598646Z       }
2026-06-20T03:13:21.2598731Z     },
2026-06-20T03:13:21.2598817Z     {
2026-06-20T03:13:21.2598921Z       "id": "REQ-REL-1",
2026-06-20T03:13:21.2599363Z       "title": "spt-releases publish-target repo: README public face, licensing split, Pages docs at the permanent lapse-proof canonical URL (ADR-0014)",
2026-06-20T03:13:21.2599463Z       "requiredStages": [
2026-06-20T03:13:21.2599540Z         "doc",
2026-06-20T03:13:21.2599626Z         "impl"
2026-06-20T03:13:21.2599710Z       ],
2026-06-20T03:13:21.2599812Z       "stages": {
2026-06-20T03:13:21.2599898Z         "doc": {
2026-06-20T03:13:21.2599983Z           "complete": true,
2026-06-20T03:13:21.2600069Z           "evidence": [
2026-06-20T03:13:21.2600150Z             {
2026-06-20T03:13:21.2600369Z               "path": "docs/adr/0014-publish-target-repo-and-lapse-proof-canonical-url.md",
2026-06-20T03:13:21.2600451Z               "line": 3
2026-06-20T03:13:21.2600546Z             }
2026-06-20T03:13:21.2600627Z           ]
2026-06-20T03:13:21.2600703Z         },
2026-06-20T03:13:21.2600794Z         "impl": {
2026-06-20T03:13:21.2600879Z           "complete": true,
2026-06-20T03:13:21.2600975Z           "evidence": [
2026-06-20T03:13:21.2601057Z             {
2026-06-20T03:13:21.2601184Z               "path": ".github/workflows/docs-publish.yml",
2026-06-20T03:13:21.2601271Z               "line": 11
2026-06-20T03:13:21.2601352Z             },
2026-06-20T03:13:21.2601438Z             {
2026-06-20T03:13:21.2601546Z               "path": "crates/xtask/src/main.rs",
2026-06-20T03:13:21.2601746Z               "line": 265
2026-06-20T03:13:21.2601833Z             }
2026-06-20T03:13:21.2602013Z           ]
2026-06-20T03:13:21.2602100Z         },
2026-06-20T03:13:21.2602171Z         "int": {
2026-06-20T03:13:21.2602270Z           "complete": false,
2026-06-20T03:13:21.2602357Z           "evidence": []
2026-06-20T03:13:21.2602438Z         },
2026-06-20T03:13:21.2602514Z         "unit": {
2026-06-20T03:13:21.2602609Z           "complete": false,
2026-06-20T03:13:21.2602705Z           "evidence": []
2026-06-20T03:13:21.2602786Z         }
2026-06-20T03:13:21.2602867Z       }
2026-06-20T03:13:21.2602948Z     },
2026-06-20T03:13:21.2603030Z     {
2026-06-20T03:13:21.2603119Z       "id": "REQ-REL-2",
2026-06-20T03:13:21.2603606Z       "title": "Release asset set consumable by the self-updater: platform binaries, SHA256SUMS, SignedRelease metadata, manifest schema, mock-adapter zip; tag-triggered cross-repo pipeline",
2026-06-20T03:13:21.2603707Z       "requiredStages": [
2026-06-20T03:13:21.2603791Z         "impl",
2026-06-20T03:13:21.2603877Z         "int"
2026-06-20T03:13:21.2603958Z       ],
2026-06-20T03:13:21.2604048Z       "stages": {
2026-06-20T03:13:21.2604127Z         "doc": {
2026-06-20T03:13:21.2604212Z           "complete": true,
2026-06-20T03:13:21.2604294Z           "evidence": [
2026-06-20T03:13:21.2604376Z             {
2026-06-20T03:13:21.2604498Z               "path": "docs/RELEASE-RUNBOOK.md",
2026-06-20T03:13:21.2604580Z               "line": 6
2026-06-20T03:13:21.2604666Z             }
2026-06-20T03:13:21.2604747Z           ]
2026-06-20T03:13:21.2604837Z         },
2026-06-20T03:13:21.2604929Z         "impl": {
2026-06-20T03:13:21.2605019Z           "complete": true,
2026-06-20T03:13:21.2605099Z           "evidence": [
2026-06-20T03:13:21.2605180Z             {
2026-06-20T03:13:21.2605305Z               "path": ".github/workflows/release.yml",
2026-06-20T03:13:21.2605386Z               "line": 16
2026-06-20T03:13:21.2605466Z             },
2026-06-20T03:13:21.2605549Z             {
2026-06-20T03:13:21.2605648Z               "path": "crates/xtask/src/main.rs",
2026-06-20T03:13:21.2605734Z               "line": 352
2026-06-20T03:13:21.2605815Z             },
2026-06-20T03:13:21.2605902Z             {
2026-06-20T03:13:21.2606010Z               "path": "crates/xtask/src/main.rs",
2026-06-20T03:13:21.2606115Z               "line": 426
2026-06-20T03:13:21.2606197Z             },
2026-06-20T03:13:21.2606274Z             {
2026-06-20T03:13:21.2606382Z               "path": "crates/xtask/src/main.rs",
2026-06-20T03:13:21.2606464Z               "line": 588
2026-06-20T03:13:21.2606546Z             },
2026-06-20T03:13:21.2606640Z             {
2026-06-20T03:13:21.2606744Z               "path": "crates/xtask/src/main.rs",
2026-06-20T03:13:21.2606829Z               "line": 720
2026-06-20T03:13:21.2606920Z             }
2026-06-20T03:13:21.2607008Z           ]
2026-06-20T03:13:21.2607089Z         },
2026-06-20T03:13:21.2607180Z         "int": {
2026-06-20T03:13:21.2607286Z           "complete": true,
2026-06-20T03:13:21.2607375Z           "evidence": [
2026-06-20T03:13:21.2607462Z             {
2026-06-20T03:13:21.2607601Z               "path": "crates/spt/tests/release_verify_e2e.rs",
2026-06-20T03:13:21.2607695Z               "line": 13
2026-06-20T03:13:21.2607781Z             }
2026-06-20T03:13:21.2607881Z           ]
2026-06-20T03:13:21.2607971Z         },
2026-06-20T03:13:21.2608057Z         "unit": {
2026-06-20T03:13:21.2608154Z           "complete": false,
2026-06-20T03:13:21.2608243Z           "evidence": []
2026-06-20T03:13:21.2608329Z         }
2026-06-20T03:13:21.2608416Z       }
2026-06-20T03:13:21.2608502Z     },
2026-06-20T03:13:21.2608572Z     {
2026-06-20T03:13:21.2608663Z       "id": "REQ-REL-3",
2026-06-20T03:13:21.2609159Z       "title": "Two-key release-signing trust anchor: primary + offline never-used recovery, both pubkeys embedded in the binary's trusted set, manual local signing (ADR-0015)",
2026-06-20T03:13:21.2609258Z       "requiredStages": [
2026-06-20T03:13:21.2609467Z         "impl",
2026-06-20T03:13:21.2609556Z         "unit"
2026-06-20T03:13:21.2609651Z       ],
2026-06-20T03:13:21.2609857Z       "stages": {
2026-06-20T03:13:21.2609942Z         "doc": {
2026-06-20T03:13:21.2610038Z           "complete": false,
2026-06-20T03:13:21.2610124Z           "evidence": []
2026-06-20T03:13:21.2610204Z         },
2026-06-20T03:13:21.2610290Z         "impl": {
2026-06-20T03:13:21.2610396Z           "complete": true,
2026-06-20T03:13:21.2610491Z           "evidence": [
2026-06-20T03:13:21.2610567Z             {
2026-06-20T03:13:21.2610692Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.2610772Z               "line": 237
2026-06-20T03:13:21.2610858Z             },
2026-06-20T03:13:21.2610934Z             {
2026-06-20T03:13:21.2611058Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.2611139Z               "line": 289
2026-06-20T03:13:21.2611220Z             },
2026-06-20T03:13:21.2611302Z             {
2026-06-20T03:13:21.2611420Z               "path": "crates/xtask/src/main.rs",
2026-06-20T03:13:21.2611516Z               "line": 329
2026-06-20T03:13:21.2611593Z             },
2026-06-20T03:13:21.2611679Z             {
2026-06-20T03:13:21.2611782Z               "path": "crates/xtask/src/main.rs",
2026-06-20T03:13:21.2611869Z               "line": 353
2026-06-20T03:13:21.2611956Z             },
2026-06-20T03:13:21.2612041Z             {
2026-06-20T03:13:21.2612149Z               "path": "crates/xtask/src/main.rs",
2026-06-20T03:13:21.2612235Z               "line": 394
2026-06-20T03:13:21.2612316Z             }
2026-06-20T03:13:21.2612398Z           ]
2026-06-20T03:13:21.2612478Z         },
2026-06-20T03:13:21.2612554Z         "int": {
2026-06-20T03:13:21.2612646Z           "complete": false,
2026-06-20T03:13:21.2612731Z           "evidence": []
2026-06-20T03:13:21.2612816Z         },
2026-06-20T03:13:21.2612903Z         "unit": {
2026-06-20T03:13:21.2613017Z           "complete": true,
2026-06-20T03:13:21.2613131Z           "evidence": [
2026-06-20T03:13:21.2613217Z             {
2026-06-20T03:13:21.2613327Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.2613417Z               "line": 1045
2026-06-20T03:13:21.2613503Z             },
2026-06-20T03:13:21.2613590Z             {
2026-06-20T03:13:21.2613708Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.2613789Z               "line": 1104
2026-06-20T03:13:21.2613867Z             }
2026-06-20T03:13:21.2613947Z           ]
2026-06-20T03:13:21.2614032Z         }
2026-06-20T03:13:21.2614099Z       }
2026-06-20T03:13:21.2614186Z     },
2026-06-20T03:13:21.2614262Z     {
2026-06-20T03:13:21.2614356Z       "id": "REQ-RUN-PICKER",
2026-06-20T03:13:21.2619146Z       "title": "Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the REQ-HOST-RUN-1 non-interactive path, untouched). Layer 1 picks kind (Create new | Pick existing). Create-new: choose a registered kind=\"harness\" adapter with its shipped+local profiles tree-nested (registry::registered / manifest.profiles / local_profile_names) → enter a charset-validated id → start. Pick-existing: category select (left/right) over [<cwd-project> | Local node | Subnet], endpoints grouped + alphabetically sorted per category, a status square per endpoint (online green ■ / offline gray ▢ — the blue \"attached\" tri-state + Kick are DEFERRED to a broker attach-presence slice, M12-W2-RULING Q1), type-to-filter (`/`, nucleo-matcher), a pinned keybind legend, and a right-half two-pane description (harness adapter:profile · best-effort project history newest→oldest from the contextstore p-<project> branches, empty-if-none · `spt endpoint description`). Confirm layer offers status-dependent options — Attach/Start/View (rc pump / cmd_endpoint_run) · Instantiate-locally (remote) · Change-harness-adapter (offline) · Fork (cmd_fork) · Resume-from-history (offline+LOCAL only; enumerate spt_store::sessions::last_k, titles `<project> @ <ts> (…id5)`, feed session_id → cmd_endpoint_run --resume). A single action enum is the source of truth so a future tap-mode (phone PTY) layers on without re-coupling to keybinds. EVERY terminal action routes through cmd_endpoint_run / existing CLI fns — no second bringup path.",
2026-06-20T03:13:21.2619547Z       "requiredStages": [
2026-06-20T03:13:21.2619634Z         "doc",
2026-06-20T03:13:21.2619729Z         "impl",
2026-06-20T03:13:21.2619813Z         "unit"
2026-06-20T03:13:21.2619903Z       ],
2026-06-20T03:13:21.2619985Z       "stages": {
2026-06-20T03:13:21.2620079Z         "doc": {
2026-06-20T03:13:21.2620173Z           "complete": true,
2026-06-20T03:13:21.2620260Z           "evidence": [
2026-06-20T03:13:21.2620346Z             {
2026-06-20T03:13:21.2620445Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.2624626Z               "line": 349
2026-06-20T03:13:21.2624732Z             }
2026-06-20T03:13:21.2624818Z           ]
2026-06-20T03:13:21.2624945Z         },
2026-06-20T03:13:21.2625035Z         "impl": {
2026-06-20T03:13:21.2625135Z           "complete": true,
2026-06-20T03:13:21.2625243Z           "evidence": [
2026-06-20T03:13:21.2625323Z             {
2026-06-20T03:13:21.2625438Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2625538Z               "line": 958
2026-06-20T03:13:21.2625610Z             },
2026-06-20T03:13:21.2625695Z             {
2026-06-20T03:13:21.2625811Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2625896Z               "line": 968
2026-06-20T03:13:21.2625976Z             },
2026-06-20T03:13:21.2626054Z             {
2026-06-20T03:13:21.2626177Z               "path": "crates/spt/src/picker/data.rs",
2026-06-20T03:13:21.2626267Z               "line": 9
2026-06-20T03:13:21.2626355Z             },
2026-06-20T03:13:21.2626445Z             {
2026-06-20T03:13:21.2626549Z               "path": "crates/spt/src/picker/data.rs",
2026-06-20T03:13:21.2626630Z               "line": 67
2026-06-20T03:13:21.2626717Z             },
2026-06-20T03:13:21.2626802Z             {
2026-06-20T03:13:21.2626907Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-20T03:13:21.2627004Z               "line": 16
2026-06-20T03:13:21.2627093Z             },
2026-06-20T03:13:21.2627174Z             {
2026-06-20T03:13:21.2627279Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-20T03:13:21.2627365Z               "line": 254
2026-06-20T03:13:21.2627450Z             },
2026-06-20T03:13:21.2627532Z             {
2026-06-20T03:13:21.2627652Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T03:13:21.2627737Z               "line": 11
2026-06-20T03:13:21.2627821Z             },
2026-06-20T03:13:21.2627902Z             {
2026-06-20T03:13:21.2628007Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T03:13:21.2628091Z               "line": 115
2026-06-20T03:13:21.2628171Z             },
2026-06-20T03:13:21.2628258Z             {
2026-06-20T03:13:21.2628373Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T03:13:21.2628463Z               "line": 554
2026-06-20T03:13:21.2628548Z             },
2026-06-20T03:13:21.2628630Z             {
2026-06-20T03:13:21.2628744Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T03:13:21.2628839Z               "line": 635
2026-06-20T03:13:21.2628912Z             },
2026-06-20T03:13:21.2629083Z             {
2026-06-20T03:13:21.2629197Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T03:13:21.2629288Z               "line": 694
2026-06-20T03:13:21.2629373Z             },
2026-06-20T03:13:21.2629473Z             {
2026-06-20T03:13:21.2629594Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T03:13:21.2629674Z               "line": 747
2026-06-20T03:13:21.2629760Z             },
2026-06-20T03:13:21.2629841Z             {
2026-06-20T03:13:21.2629956Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T03:13:21.2630035Z               "line": 785
2026-06-20T03:13:21.2630266Z             },
2026-06-20T03:13:21.2630355Z             {
2026-06-20T03:13:21.2630459Z               "path": "crates/spt/src/picker/view.rs",
2026-06-20T03:13:21.2630649Z               "line": 8
2026-06-20T03:13:21.2630728Z             }
2026-06-20T03:13:21.2630815Z           ]
2026-06-20T03:13:21.2630897Z         },
2026-06-20T03:13:21.2630982Z         "int": {
2026-06-20T03:13:21.2631081Z           "complete": false,
2026-06-20T03:13:21.2631163Z           "evidence": []
2026-06-20T03:13:21.2631244Z         },
2026-06-20T03:13:21.2631325Z         "unit": {
2026-06-20T03:13:21.2631420Z           "complete": true,
2026-06-20T03:13:21.2631502Z           "evidence": [
2026-06-20T03:13:21.2631583Z             {
2026-06-20T03:13:21.2631696Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2631784Z               "line": 7638
2026-06-20T03:13:21.2631860Z             },
2026-06-20T03:13:21.2631935Z             {
2026-06-20T03:13:21.2632040Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2632132Z               "line": 7649
2026-06-20T03:13:21.2632217Z             },
2026-06-20T03:13:21.2632294Z             {
2026-06-20T03:13:21.2632408Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T03:13:21.2632494Z               "line": 879
2026-06-20T03:13:21.2632564Z             },
2026-06-20T03:13:21.2632655Z             {
2026-06-20T03:13:21.2632757Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T03:13:21.2632851Z               "line": 928
2026-06-20T03:13:21.2632937Z             },
2026-06-20T03:13:21.2633014Z             {
2026-06-20T03:13:21.2633119Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T03:13:21.2633208Z               "line": 979
2026-06-20T03:13:21.2633293Z             },
2026-06-20T03:13:21.2633365Z             {
2026-06-20T03:13:21.2633475Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T03:13:21.2633579Z               "line": 996
2026-06-20T03:13:21.2633660Z             },
2026-06-20T03:13:21.2633757Z             {
2026-06-20T03:13:21.2633861Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T03:13:21.2633956Z               "line": 1005
2026-06-20T03:13:21.2634038Z             },
2026-06-20T03:13:21.2634123Z             {
2026-06-20T03:13:21.2634227Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T03:13:21.2634314Z               "line": 1016
2026-06-20T03:13:21.2634396Z             },
2026-06-20T03:13:21.2634476Z             {
2026-06-20T03:13:21.2634590Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T03:13:21.2634677Z               "line": 1038
2026-06-20T03:13:21.2634753Z             },
2026-06-20T03:13:21.2634834Z             {
2026-06-20T03:13:21.2634943Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T03:13:21.2635030Z               "line": 1057
2026-06-20T03:13:21.2635105Z             },
2026-06-20T03:13:21.2635186Z             {
2026-06-20T03:13:21.2635297Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T03:13:21.2635388Z               "line": 1107
2026-06-20T03:13:21.2635477Z             },
2026-06-20T03:13:21.2635557Z             {
2026-06-20T03:13:21.2635667Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T03:13:21.2635756Z               "line": 1136
2026-06-20T03:13:21.2635841Z             },
2026-06-20T03:13:21.2635922Z             {
2026-06-20T03:13:21.2636037Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T03:13:21.2636127Z               "line": 1149
2026-06-20T03:13:21.2636212Z             },
2026-06-20T03:13:21.2636299Z             {
2026-06-20T03:13:21.2636404Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T03:13:21.2636499Z               "line": 1215
2026-06-20T03:13:21.2636585Z             },
2026-06-20T03:13:21.2636666Z             {
2026-06-20T03:13:21.2636780Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T03:13:21.2636866Z               "line": 1256
2026-06-20T03:13:21.2636948Z             },
2026-06-20T03:13:21.2637114Z             {
2026-06-20T03:13:21.2637229Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T03:13:21.2637386Z               "line": 1272
2026-06-20T03:13:21.2637462Z             },
2026-06-20T03:13:21.2637539Z             {
2026-06-20T03:13:21.2637648Z               "path": "crates/spt/src/picker/view.rs",
2026-06-20T03:13:21.2637734Z               "line": 491
2026-06-20T03:13:21.2637820Z             },
2026-06-20T03:13:21.2637903Z             {
2026-06-20T03:13:21.2638010Z               "path": "crates/spt/src/picker/view.rs",
2026-06-20T03:13:21.2638092Z               "line": 506
2026-06-20T03:13:21.2638178Z             },
2026-06-20T03:13:21.2638259Z             {
2026-06-20T03:13:21.2638367Z               "path": "crates/spt/src/picker/view.rs",
2026-06-20T03:13:21.2638452Z               "line": 524
2026-06-20T03:13:21.2638539Z             },
2026-06-20T03:13:21.2638623Z             {
2026-06-20T03:13:21.2638727Z               "path": "crates/spt/src/picker/view.rs",
2026-06-20T03:13:21.2638827Z               "line": 546
2026-06-20T03:13:21.2638914Z             },
2026-06-20T03:13:21.2639084Z             {
2026-06-20T03:13:21.2639200Z               "path": "crates/spt/src/picker/view.rs",
2026-06-20T03:13:21.2639290Z               "line": 556
2026-06-20T03:13:21.2639376Z             },
2026-06-20T03:13:21.2639457Z             {
2026-06-20T03:13:21.2639576Z               "path": "crates/spt/src/picker/view.rs",
2026-06-20T03:13:21.2639652Z               "line": 582
2026-06-20T03:13:21.2639743Z             }
2026-06-20T03:13:21.2639825Z           ]
2026-06-20T03:13:21.2639905Z         }
2026-06-20T03:13:21.2639991Z       }
2026-06-20T03:13:21.2640072Z     },
2026-06-20T03:13:21.2640154Z     {
2026-06-20T03:13:21.2640248Z       "id": "REQ-RUN-SHORTCUT",
2026-06-20T03:13:21.2644994Z       "title": "`<basename>-<id>` launcher shortcut generation (picker `s` keybind, M12-W2-T2.4): from any pre-start options set the picker writes/updates a `<basename>-<id>` launcher at the project root baking the current selection's non-interactive `spt endpoint run` flags (terminal actions only: adapter[:profile] + id + (create|resume) + (start|attach|view); Kick/Instantiate/Change-adapter/Fork are interactive-only, not bakeable). BASENAME IS A PARAMETER (operator rev. 2026-06-14): harness-agnostic spt-core defaults to `spt` (→ `spt-<id>`); an adapter/flow OVERRIDES it (spt-claude-code → `cc`), so spt-core NEVER bakes `cc` (a harness name) into itself. The basename must be a DISTINCT token, never bare `spt` (a `spt.cmd` would shadow the real `spt.exe` only under cmd.exe cwd-first search, silently no-op in PowerShell/Unix, and self-recurse). The script is the CURRENT OS's native form — `.cmd` on Windows (NOT `.ps1`: default PATHEXT excludes `.ps1` so a bare/ext-less name never resolves one; `.cmd` is PATHEXT-resolvable), POSIX `sh` (+chmod +x) on Unix (a single portable form can't be both). The generated header documents the invocation reality (cmd.exe bare `<name>` in the project dir / PowerShell `.\\<name>` / Unix `./<name>`; a truly-bare basename on PATH = a PATH-installed launcher, `/spt:setup`'s job). Overwrite is SENTINEL-guarded: the generator writes + checks a generated-by header marker — it overwrites its own prior output freely, but REFUSES + warns if a same-named file lacks the sentinel (never clobber a user file). Requires the additive `--create` flag on `Run{}` (the default-fresh made explicit; N-1-safe).",
2026-06-20T03:13:21.2645145Z       "requiredStages": [
2026-06-20T03:13:21.2645233Z         "doc",
2026-06-20T03:13:21.2645318Z         "impl",
2026-06-20T03:13:21.2645409Z         "unit"
2026-06-20T03:13:21.2645499Z       ],
2026-06-20T03:13:21.2645585Z       "stages": {
2026-06-20T03:13:21.2645671Z         "doc": {
2026-06-20T03:13:21.2645761Z           "complete": true,
2026-06-20T03:13:21.2645852Z           "evidence": [
2026-06-20T03:13:21.2645924Z             {
2026-06-20T03:13:21.2646018Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.2646113Z               "line": 390
2026-06-20T03:13:21.2646307Z             }
2026-06-20T03:13:21.2646387Z           ]
2026-06-20T03:13:21.2646472Z         },
2026-06-20T03:13:21.2646692Z         "impl": {
2026-06-20T03:13:21.2646782Z           "complete": true,
2026-06-20T03:13:21.2646879Z           "evidence": [
2026-06-20T03:13:21.2646960Z             {
2026-06-20T03:13:21.2647097Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-20T03:13:21.2647189Z               "line": 39
2026-06-20T03:13:21.2647269Z             },
2026-06-20T03:13:21.2647359Z             {
2026-06-20T03:13:21.2647484Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-20T03:13:21.2647574Z               "line": 79
2026-06-20T03:13:21.2647665Z             },
2026-06-20T03:13:21.2647746Z             {
2026-06-20T03:13:21.2647866Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-20T03:13:21.2647952Z               "line": 162
2026-06-20T03:13:21.2648041Z             }
2026-06-20T03:13:21.2648119Z           ]
2026-06-20T03:13:21.2648209Z         },
2026-06-20T03:13:21.2648295Z         "int": {
2026-06-20T03:13:21.2648385Z           "complete": false,
2026-06-20T03:13:21.2648477Z           "evidence": []
2026-06-20T03:13:21.2648561Z         },
2026-06-20T03:13:21.2648652Z         "unit": {
2026-06-20T03:13:21.2648734Z           "complete": true,
2026-06-20T03:13:21.2648834Z           "evidence": [
2026-06-20T03:13:21.2648923Z             {
2026-06-20T03:13:21.2649128Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-20T03:13:21.2649216Z               "line": 206
2026-06-20T03:13:21.2649302Z             },
2026-06-20T03:13:21.2649388Z             {
2026-06-20T03:13:21.2649493Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-20T03:13:21.2649578Z               "line": 222
2026-06-20T03:13:21.2649664Z             },
2026-06-20T03:13:21.2649746Z             {
2026-06-20T03:13:21.2649865Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-20T03:13:21.2649950Z               "line": 238
2026-06-20T03:13:21.2650032Z             },
2026-06-20T03:13:21.2650113Z             {
2026-06-20T03:13:21.2650236Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-20T03:13:21.2650337Z               "line": 251
2026-06-20T03:13:21.2650418Z             },
2026-06-20T03:13:21.2650499Z             {
2026-06-20T03:13:21.2650613Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-20T03:13:21.2650705Z               "line": 258
2026-06-20T03:13:21.2650784Z             }
2026-06-20T03:13:21.2650870Z           ]
2026-06-20T03:13:21.2650957Z         }
2026-06-20T03:13:21.2651034Z       }
2026-06-20T03:13:21.2651113Z     },
2026-06-20T03:13:21.2651195Z     {
2026-06-20T03:13:21.2651296Z       "id": "REQ-SEAM-ACTIVITY",
2026-06-20T03:13:21.2651476Z       "title": "Activity/idle reported via api sentinels, not PTY quiescence",
2026-06-20T03:13:21.2651579Z       "requiredStages": [
2026-06-20T03:13:21.2651676Z         "impl",
2026-06-20T03:13:21.2651750Z         "unit"
2026-06-20T03:13:21.2651835Z       ],
2026-06-20T03:13:21.2651921Z       "stages": {
2026-06-20T03:13:21.2652007Z         "doc": {
2026-06-20T03:13:21.2652102Z           "complete": false,
2026-06-20T03:13:21.2652188Z           "evidence": []
2026-06-20T03:13:21.2652279Z         },
2026-06-20T03:13:21.2652351Z         "impl": {
2026-06-20T03:13:21.2652445Z           "complete": true,
2026-06-20T03:13:21.2652531Z           "evidence": [
2026-06-20T03:13:21.2652618Z             {
2026-06-20T03:13:21.2652732Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T03:13:21.2652822Z               "line": 18
2026-06-20T03:13:21.2652909Z             },
2026-06-20T03:13:21.2652980Z             {
2026-06-20T03:13:21.2653108Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T03:13:21.2653199Z               "line": 35
2026-06-20T03:13:21.2653281Z             },
2026-06-20T03:13:21.2653356Z             {
2026-06-20T03:13:21.2653471Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T03:13:21.2653563Z               "line": 72
2026-06-20T03:13:21.2653752Z             }
2026-06-20T03:13:21.2653834Z           ]
2026-06-20T03:13:21.2653999Z         },
2026-06-20T03:13:21.2654081Z         "int": {
2026-06-20T03:13:21.2654168Z           "complete": false,
2026-06-20T03:13:21.2654268Z           "evidence": []
2026-06-20T03:13:21.2654352Z         },
2026-06-20T03:13:21.2654432Z         "unit": {
2026-06-20T03:13:21.2654519Z           "complete": true,
2026-06-20T03:13:21.2654601Z           "evidence": [
2026-06-20T03:13:21.2654686Z             {
2026-06-20T03:13:21.2654795Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T03:13:21.2654877Z               "line": 239
2026-06-20T03:13:21.2654953Z             },
2026-06-20T03:13:21.2655034Z             {
2026-06-20T03:13:21.2655149Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T03:13:21.2655230Z               "line": 256
2026-06-20T03:13:21.2655315Z             },
2026-06-20T03:13:21.2655386Z             {
2026-06-20T03:13:21.2655511Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T03:13:21.2655592Z               "line": 265
2026-06-20T03:13:21.2655682Z             }
2026-06-20T03:13:21.2655764Z           ]
2026-06-20T03:13:21.2655840Z         }
2026-06-20T03:13:21.2655921Z       }
2026-06-20T03:13:21.2655997Z     },
2026-06-20T03:13:21.2656083Z     {
2026-06-20T03:13:21.2656188Z       "id": "REQ-SEAM-CAPABILITY",
2026-06-20T03:13:21.2656336Z       "title": "Hostable endpoint-types capability declaration",
2026-06-20T03:13:21.2656437Z       "requiredStages": [
2026-06-20T03:13:21.2656517Z         "impl",
2026-06-20T03:13:21.2656607Z         "unit"
2026-06-20T03:13:21.2656687Z       ],
2026-06-20T03:13:21.2656778Z       "stages": {
2026-06-20T03:13:21.2656867Z         "doc": {
2026-06-20T03:13:21.2656956Z           "complete": false,
2026-06-20T03:13:21.2657052Z           "evidence": []
2026-06-20T03:13:21.2657134Z         },
2026-06-20T03:13:21.2657224Z         "impl": {
2026-06-20T03:13:21.2657314Z           "complete": true,
2026-06-20T03:13:21.2657415Z           "evidence": [
2026-06-20T03:13:21.2657501Z             {
2026-06-20T03:13:21.2657619Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.2657706Z               "line": 598
2026-06-20T03:13:21.2657787Z             }
2026-06-20T03:13:21.2657868Z           ]
2026-06-20T03:13:21.2657953Z         },
2026-06-20T03:13:21.2658036Z         "int": {
2026-06-20T03:13:21.2658126Z           "complete": false,
2026-06-20T03:13:21.2658201Z           "evidence": []
2026-06-20T03:13:21.2658287Z         },
2026-06-20T03:13:21.2658374Z         "unit": {
2026-06-20T03:13:21.2658469Z           "complete": true,
2026-06-20T03:13:21.2658554Z           "evidence": [
2026-06-20T03:13:21.2658635Z             {
2026-06-20T03:13:21.2658750Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.2658835Z               "line": 967
2026-06-20T03:13:21.2658921Z             }
2026-06-20T03:13:21.2659070Z           ]
2026-06-20T03:13:21.2659150Z         }
2026-06-20T03:13:21.2659236Z       }
2026-06-20T03:13:21.2659314Z     },
2026-06-20T03:13:21.2659399Z     {
2026-06-20T03:13:21.2659492Z       "id": "REQ-SEAM-HISTORY",
2026-06-20T03:13:21.2659678Z       "title": "History subsystem (fetcher / locate-normalize / native store)",
2026-06-20T03:13:21.2659767Z       "requiredStages": [
2026-06-20T03:13:21.2659842Z         "impl",
2026-06-20T03:13:21.2659924Z         "unit",
2026-06-20T03:13:21.2660020Z         "int"
2026-06-20T03:13:21.2660101Z       ],
2026-06-20T03:13:21.2660186Z       "stages": {
2026-06-20T03:13:21.2660277Z         "doc": {
2026-06-20T03:13:21.2660358Z           "complete": false,
2026-06-20T03:13:21.2660453Z           "evidence": []
2026-06-20T03:13:21.2660539Z         },
2026-06-20T03:13:21.2660626Z         "impl": {
2026-06-20T03:13:21.2660721Z           "complete": true,
2026-06-20T03:13:21.2660801Z           "evidence": [
2026-06-20T03:13:21.2660882Z             {
2026-06-20T03:13:21.2660998Z               "path": "crates/spt-live/src/echo.rs",
2026-06-20T03:13:21.2661192Z               "line": 24
2026-06-20T03:13:21.2661270Z             },
2026-06-20T03:13:21.2661440Z             {
2026-06-20T03:13:21.2661565Z               "path": "crates/spt-live/src/history.rs",
2026-06-20T03:13:21.2661655Z               "line": 22
2026-06-20T03:13:21.2661746Z             }
2026-06-20T03:13:21.2661822Z           ]
2026-06-20T03:13:21.2661914Z         },
2026-06-20T03:13:21.2661989Z         "int": {
2026-06-20T03:13:21.2662088Z           "complete": true,
2026-06-20T03:13:21.2662183Z           "evidence": [
2026-06-20T03:13:21.2662264Z             {
2026-06-20T03:13:21.2662386Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-20T03:13:21.2662481Z               "line": 260
2026-06-20T03:13:21.2662558Z             }
2026-06-20T03:13:21.2662635Z           ]
2026-06-20T03:13:21.2662724Z         },
2026-06-20T03:13:21.2662810Z         "unit": {
2026-06-20T03:13:21.2662897Z           "complete": true,
2026-06-20T03:13:21.2662982Z           "evidence": [
2026-06-20T03:13:21.2663063Z             {
2026-06-20T03:13:21.2663178Z               "path": "crates/spt-live/src/echo.rs",
2026-06-20T03:13:21.2663278Z               "line": 171
2026-06-20T03:13:21.2663363Z             },
2026-06-20T03:13:21.2663450Z             {
2026-06-20T03:13:21.2663554Z               "path": "crates/spt-live/src/echo.rs",
2026-06-20T03:13:21.2663636Z               "line": 200
2026-06-20T03:13:21.2663721Z             },
2026-06-20T03:13:21.2663803Z             {
2026-06-20T03:13:21.2663911Z               "path": "crates/spt-live/src/echo.rs",
2026-06-20T03:13:21.2663997Z               "line": 220
2026-06-20T03:13:21.2664084Z             },
2026-06-20T03:13:21.2664161Z             {
2026-06-20T03:13:21.2664279Z               "path": "crates/spt-live/src/history.rs",
2026-06-20T03:13:21.2664365Z               "line": 199
2026-06-20T03:13:21.2664452Z             },
2026-06-20T03:13:21.2664532Z             {
2026-06-20T03:13:21.2664660Z               "path": "crates/spt-live/src/history.rs",
2026-06-20T03:13:21.2664757Z               "line": 219
2026-06-20T03:13:21.2664842Z             },
2026-06-20T03:13:21.2664926Z             {
2026-06-20T03:13:21.2665036Z               "path": "crates/spt-live/src/history.rs",
2026-06-20T03:13:21.2665132Z               "line": 244
2026-06-20T03:13:21.2665213Z             },
2026-06-20T03:13:21.2665298Z             {
2026-06-20T03:13:21.2665408Z               "path": "crates/spt-live/src/history.rs",
2026-06-20T03:13:21.2665489Z               "line": 276
2026-06-20T03:13:21.2665574Z             },
2026-06-20T03:13:21.2665660Z             {
2026-06-20T03:13:21.2665776Z               "path": "crates/spt-live/src/history.rs",
2026-06-20T03:13:21.2665857Z               "line": 297
2026-06-20T03:13:21.2665942Z             },
2026-06-20T03:13:21.2666033Z             {
2026-06-20T03:13:21.2666147Z               "path": "crates/spt-live/src/history.rs",
2026-06-20T03:13:21.2666237Z               "line": 324
2026-06-20T03:13:21.2666319Z             }
2026-06-20T03:13:21.2666410Z           ]
2026-06-20T03:13:21.2666500Z         }
2026-06-20T03:13:21.2666581Z       }
2026-06-20T03:13:21.2666673Z     },
2026-06-20T03:13:21.2666753Z     {
2026-06-20T03:13:21.2666857Z       "id": "REQ-SEAM-INJECT",
2026-06-20T03:13:21.2667026Z       "title": "inject-input methods configurable per activity-state",
2026-06-20T03:13:21.2667129Z       "requiredStages": [
2026-06-20T03:13:21.2667219Z         "impl",
2026-06-20T03:13:21.2667300Z         "unit"
2026-06-20T03:13:21.2667381Z       ],
2026-06-20T03:13:21.2667455Z       "stages": {
2026-06-20T03:13:21.2667536Z         "doc": {
2026-06-20T03:13:21.2667631Z           "complete": false,
2026-06-20T03:13:21.2667723Z           "evidence": []
2026-06-20T03:13:21.2667803Z         },
2026-06-20T03:13:21.2667893Z         "impl": {
2026-06-20T03:13:21.2667990Z           "complete": true,
2026-06-20T03:13:21.2668080Z           "evidence": [
2026-06-20T03:13:21.2668165Z             {
2026-06-20T03:13:21.2668271Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T03:13:21.2668446Z               "line": 19
2026-06-20T03:13:21.2668522Z             },
2026-06-20T03:13:21.2668681Z             {
2026-06-20T03:13:21.2668795Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T03:13:21.2668881Z               "line": 111
2026-06-20T03:13:21.2669043Z             }
2026-06-20T03:13:21.2669129Z           ]
2026-06-20T03:13:21.2669215Z         },
2026-06-20T03:13:21.2669296Z         "int": {
2026-06-20T03:13:21.2669386Z           "complete": false,
2026-06-20T03:13:21.2669506Z           "evidence": []
2026-06-20T03:13:21.2669592Z         },
2026-06-20T03:13:21.2669672Z         "unit": {
2026-06-20T03:13:21.2669758Z           "complete": true,
2026-06-20T03:13:21.2669849Z           "evidence": [
2026-06-20T03:13:21.2669926Z             {
2026-06-20T03:13:21.2670034Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T03:13:21.2670119Z               "line": 345
2026-06-20T03:13:21.2670196Z             },
2026-06-20T03:13:21.2670290Z             {
2026-06-20T03:13:21.2670389Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T03:13:21.2670475Z               "line": 365
2026-06-20T03:13:21.2670561Z             }
2026-06-20T03:13:21.2670638Z           ]
2026-06-20T03:13:21.2670722Z         }
2026-06-20T03:13:21.2670803Z       }
2026-06-20T03:13:21.2670886Z     },
2026-06-20T03:13:21.2670957Z     {
2026-06-20T03:13:21.2671065Z       "id": "REQ-SEAM-POSTSPAWN",
2026-06-20T03:13:21.2671200Z       "title": "post-spawn / api bind seam with boot nonce",
2026-06-20T03:13:21.2671291Z       "requiredStages": [
2026-06-20T03:13:21.2671371Z         "impl",
2026-06-20T03:13:21.2671452Z         "unit"
2026-06-20T03:13:21.2671534Z       ],
2026-06-20T03:13:21.2671605Z       "stages": {
2026-06-20T03:13:21.2671690Z         "doc": {
2026-06-20T03:13:21.2671787Z           "complete": false,
2026-06-20T03:13:21.2671873Z           "evidence": []
2026-06-20T03:13:21.2671957Z         },
2026-06-20T03:13:21.2672043Z         "impl": {
2026-06-20T03:13:21.2672144Z           "complete": true,
2026-06-20T03:13:21.2672225Z           "evidence": [
2026-06-20T03:13:21.2672316Z             {
2026-06-20T03:13:21.2672431Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.2672512Z               "line": 18
2026-06-20T03:13:21.2672601Z             },
2026-06-20T03:13:21.2672672Z             {
2026-06-20T03:13:21.2672791Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.2672880Z               "line": 431
2026-06-20T03:13:21.2672974Z             }
2026-06-20T03:13:21.2673051Z           ]
2026-06-20T03:13:21.2673147Z         },
2026-06-20T03:13:21.2673237Z         "int": {
2026-06-20T03:13:21.2673318Z           "complete": false,
2026-06-20T03:13:21.2673409Z           "evidence": []
2026-06-20T03:13:21.2673490Z         },
2026-06-20T03:13:21.2673580Z         "unit": {
2026-06-20T03:13:21.2673671Z           "complete": true,
2026-06-20T03:13:21.2673762Z           "evidence": [
2026-06-20T03:13:21.2673853Z             {
2026-06-20T03:13:21.2673956Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.2674053Z               "line": 881
2026-06-20T03:13:21.2674134Z             },
2026-06-20T03:13:21.2674220Z             {
2026-06-20T03:13:21.2674329Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.2674420Z               "line": 891
2026-06-20T03:13:21.2674496Z             }
2026-06-20T03:13:21.2674576Z           ]
2026-06-20T03:13:21.2674659Z         }
2026-06-20T03:13:21.2674745Z       }
2026-06-20T03:13:21.2674829Z     },
2026-06-20T03:13:21.2674901Z     {
2026-06-20T03:13:21.2675002Z       "id": "REQ-SEAM-PSYCHE",
2026-06-20T03:13:21.2675144Z       "title": "spawn-psyche seam (fresh + resume templates)",
2026-06-20T03:13:21.2675230Z       "requiredStages": [
2026-06-20T03:13:21.2675322Z         "impl",
2026-06-20T03:13:21.2675403Z         "unit",
2026-06-20T03:13:21.2675496Z         "int"
2026-06-20T03:13:21.2675577Z       ],
2026-06-20T03:13:21.2675783Z       "stages": {
2026-06-20T03:13:21.2675877Z         "doc": {
2026-06-20T03:13:21.2675968Z           "complete": false,
2026-06-20T03:13:21.2676163Z           "evidence": []
2026-06-20T03:13:21.2676250Z         },
2026-06-20T03:13:21.2676336Z         "impl": {
2026-06-20T03:13:21.2676427Z           "complete": true,
2026-06-20T03:13:21.2676521Z           "evidence": [
2026-06-20T03:13:21.2676608Z             {
2026-06-20T03:13:21.2676726Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-20T03:13:21.2676816Z               "line": 19
2026-06-20T03:13:21.2676904Z             },
2026-06-20T03:13:21.2676985Z             {
2026-06-20T03:13:21.2677098Z               "path": "crates/spt/src/api/live.rs",
2026-06-20T03:13:21.2677189Z               "line": 12
2026-06-20T03:13:21.2677271Z             },
2026-06-20T03:13:21.2677355Z             {
2026-06-20T03:13:21.2677465Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.2677548Z               "line": 301
2026-06-20T03:13:21.2677647Z             }
2026-06-20T03:13:21.2677727Z           ]
2026-06-20T03:13:21.2677807Z         },
2026-06-20T03:13:21.2677889Z         "int": {
2026-06-20T03:13:21.2677974Z           "complete": true,
2026-06-20T03:13:21.2678058Z           "evidence": [
2026-06-20T03:13:21.2678129Z             {
2026-06-20T03:13:21.2678259Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-20T03:13:21.2678349Z               "line": 259
2026-06-20T03:13:21.2678420Z             }
2026-06-20T03:13:21.2678511Z           ]
2026-06-20T03:13:21.2678593Z         },
2026-06-20T03:13:21.2678678Z         "unit": {
2026-06-20T03:13:21.2678763Z           "complete": true,
2026-06-20T03:13:21.2678851Z           "evidence": [
2026-06-20T03:13:21.2678931Z             {
2026-06-20T03:13:21.2679132Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-20T03:13:21.2679227Z               "line": 195
2026-06-20T03:13:21.2679308Z             },
2026-06-20T03:13:21.2679393Z             {
2026-06-20T03:13:21.2679514Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-20T03:13:21.2679603Z               "line": 202
2026-06-20T03:13:21.2679694Z             },
2026-06-20T03:13:21.2679776Z             {
2026-06-20T03:13:21.2679894Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-20T03:13:21.2679975Z               "line": 225
2026-06-20T03:13:21.2680061Z             },
2026-06-20T03:13:21.2680139Z             {
2026-06-20T03:13:21.2680261Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-20T03:13:21.2680352Z               "line": 106
2026-06-20T03:13:21.2680439Z             },
2026-06-20T03:13:21.2680528Z             {
2026-06-20T03:13:21.2680632Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-20T03:13:21.2680727Z               "line": 137
2026-06-20T03:13:21.2680827Z             },
2026-06-20T03:13:21.2680911Z             {
2026-06-20T03:13:21.2681025Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-20T03:13:21.2681107Z               "line": 161
2026-06-20T03:13:21.2681198Z             }
2026-06-20T03:13:21.2681278Z           ]
2026-06-20T03:13:21.2681364Z         }
2026-06-20T03:13:21.2681441Z       }
2026-06-20T03:13:21.2681531Z     },
2026-06-20T03:13:21.2681617Z     {
2026-06-20T03:13:21.2681713Z       "id": "REQ-SEAM-RESUME",
2026-06-20T03:13:21.2681907Z       "title": "resume-session seam (fresh-with-preload / continue-existing)",
2026-06-20T03:13:21.2682003Z       "requiredStages": [
2026-06-20T03:13:21.2682080Z         "impl",
2026-06-20T03:13:21.2682160Z         "unit"
2026-06-20T03:13:21.2682246Z       ],
2026-06-20T03:13:21.2682342Z       "stages": {
2026-06-20T03:13:21.2682428Z         "doc": {
2026-06-20T03:13:21.2682527Z           "complete": false,
2026-06-20T03:13:21.2682603Z           "evidence": []
2026-06-20T03:13:21.2682686Z         },
2026-06-20T03:13:21.2682762Z         "impl": {
2026-06-20T03:13:21.2682861Z           "complete": true,
2026-06-20T03:13:21.2682953Z           "evidence": [
2026-06-20T03:13:21.2683034Z             {
2026-06-20T03:13:21.2683256Z               "path": "crates/spt-live/src/resume.rs",
2026-06-20T03:13:21.2683337Z               "line": 19
2026-06-20T03:13:21.2683516Z             }
2026-06-20T03:13:21.2683597Z           ]
2026-06-20T03:13:21.2683678Z         },
2026-06-20T03:13:21.2683760Z         "int": {
2026-06-20T03:13:21.2683845Z           "complete": false,
2026-06-20T03:13:21.2683935Z           "evidence": []
2026-06-20T03:13:21.2684022Z         },
2026-06-20T03:13:21.2684117Z         "unit": {
2026-06-20T03:13:21.2684207Z           "complete": true,
2026-06-20T03:13:21.2684303Z           "evidence": [
2026-06-20T03:13:21.2684394Z             {
2026-06-20T03:13:21.2684498Z               "path": "crates/spt-live/src/resume.rs",
2026-06-20T03:13:21.2684585Z               "line": 201
2026-06-20T03:13:21.2684665Z             },
2026-06-20T03:13:21.2684756Z             {
2026-06-20T03:13:21.2684865Z               "path": "crates/spt-live/src/resume.rs",
2026-06-20T03:13:21.2684957Z               "line": 223
2026-06-20T03:13:21.2685042Z             },
2026-06-20T03:13:21.2685118Z             {
2026-06-20T03:13:21.2685229Z               "path": "crates/spt-live/src/resume.rs",
2026-06-20T03:13:21.2685319Z               "line": 244
2026-06-20T03:13:21.2685404Z             }
2026-06-20T03:13:21.2685485Z           ]
2026-06-20T03:13:21.2685572Z         }
2026-06-20T03:13:21.2685657Z       }
2026-06-20T03:13:21.2685733Z     },
2026-06-20T03:13:21.2685825Z     {
2026-06-20T03:13:21.2685925Z       "id": "REQ-SEAM-SPAWN",
2026-06-20T03:13:21.2686028Z       "title": "spawn-session seam",
2026-06-20T03:13:21.2686123Z       "requiredStages": [
2026-06-20T03:13:21.2686214Z         "impl",
2026-06-20T03:13:21.2686301Z         "unit"
2026-06-20T03:13:21.2686390Z       ],
2026-06-20T03:13:21.2686480Z       "stages": {
2026-06-20T03:13:21.2686563Z         "doc": {
2026-06-20T03:13:21.2686663Z           "complete": false,
2026-06-20T03:13:21.2686752Z           "evidence": []
2026-06-20T03:13:21.2686839Z         },
2026-06-20T03:13:21.2686934Z         "impl": {
2026-06-20T03:13:21.2687020Z           "complete": true,
2026-06-20T03:13:21.2687106Z           "evidence": [
2026-06-20T03:13:21.2687197Z             {
2026-06-20T03:13:21.2687330Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.2687420Z               "line": 20
2026-06-20T03:13:21.2687502Z             }
2026-06-20T03:13:21.2687587Z           ]
2026-06-20T03:13:21.2687673Z         },
2026-06-20T03:13:21.2687749Z         "int": {
2026-06-20T03:13:21.2687841Z           "complete": false,
2026-06-20T03:13:21.2687935Z           "evidence": []
2026-06-20T03:13:21.2688016Z         },
2026-06-20T03:13:21.2688108Z         "unit": {
2026-06-20T03:13:21.2688193Z           "complete": true,
2026-06-20T03:13:21.2688282Z           "evidence": [
2026-06-20T03:13:21.2688377Z             {
2026-06-20T03:13:21.2688492Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.2688585Z               "line": 608
2026-06-20T03:13:21.2688661Z             },
2026-06-20T03:13:21.2688757Z             {
2026-06-20T03:13:21.2688877Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.2689028Z               "line": 615
2026-06-20T03:13:21.2689110Z             },
2026-06-20T03:13:21.2689196Z             {
2026-06-20T03:13:21.2689314Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.2689401Z               "line": 721
2026-06-20T03:13:21.2689482Z             },
2026-06-20T03:13:21.2689563Z             {
2026-06-20T03:13:21.2689682Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.2689764Z               "line": 727
2026-06-20T03:13:21.2689844Z             },
2026-06-20T03:13:21.2689929Z             {
2026-06-20T03:13:21.2690045Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.2690135Z               "line": 752
2026-06-20T03:13:21.2690225Z             },
2026-06-20T03:13:21.2690302Z             {
2026-06-20T03:13:21.2690422Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T03:13:21.2694748Z               "line": 789
2026-06-20T03:13:21.2695006Z             }
2026-06-20T03:13:21.2695082Z           ]
2026-06-20T03:13:21.2695164Z         }
2026-06-20T03:13:21.2695240Z       }
2026-06-20T03:13:21.2695321Z     },
2026-06-20T03:13:21.2695401Z     {
2026-06-20T03:13:21.2695508Z       "id": "REQ-SEAM-UPDATE",
2026-06-20T03:13:21.2695683Z       "title": "Adapter-update avenue (file-pull / delegated command)",
2026-06-20T03:13:21.2695779Z       "requiredStages": [
2026-06-20T03:13:21.2695860Z         "impl",
2026-06-20T03:13:21.2695940Z         "unit"
2026-06-20T03:13:21.2696027Z       ],
2026-06-20T03:13:21.2696109Z       "stages": {
2026-06-20T03:13:21.2696189Z         "doc": {
2026-06-20T03:13:21.2696284Z           "complete": false,
2026-06-20T03:13:21.2696370Z           "evidence": []
2026-06-20T03:13:21.2696452Z         },
2026-06-20T03:13:21.2696541Z         "impl": {
2026-06-20T03:13:21.2696631Z           "complete": true,
2026-06-20T03:13:21.2696735Z           "evidence": [
2026-06-20T03:13:21.2696818Z             {
2026-06-20T03:13:21.2696960Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T03:13:21.2697055Z               "line": 28
2026-06-20T03:13:21.2697142Z             },
2026-06-20T03:13:21.2697223Z             {
2026-06-20T03:13:21.2697351Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T03:13:21.2697433Z               "line": 88
2026-06-20T03:13:21.2697514Z             }
2026-06-20T03:13:21.2697599Z           ]
2026-06-20T03:13:21.2697676Z         },
2026-06-20T03:13:21.2697757Z         "int": {
2026-06-20T03:13:21.2697852Z           "complete": false,
2026-06-20T03:13:21.2697937Z           "evidence": []
2026-06-20T03:13:21.2698024Z         },
2026-06-20T03:13:21.2698105Z         "unit": {
2026-06-20T03:13:21.2698190Z           "complete": true,
2026-06-20T03:13:21.2698280Z           "evidence": [
2026-06-20T03:13:21.2698363Z             {
2026-06-20T03:13:21.2698495Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T03:13:21.2698577Z               "line": 326
2026-06-20T03:13:21.2698668Z             },
2026-06-20T03:13:21.2698749Z             {
2026-06-20T03:13:21.2698876Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T03:13:21.2699024Z               "line": 337
2026-06-20T03:13:21.2699099Z             }
2026-06-20T03:13:21.2699179Z           ]
2026-06-20T03:13:21.2699259Z         }
2026-06-20T03:13:21.2699336Z       }
2026-06-20T03:13:21.2699413Z     },
2026-06-20T03:13:21.2699489Z     {
2026-06-20T03:13:21.2699564Z       "id": "REQ-SEC-1",
2026-06-20T03:13:21.2699962Z       "title": "Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants",
2026-06-20T03:13:21.2700052Z       "requiredStages": [
2026-06-20T03:13:21.2700132Z         "impl",
2026-06-20T03:13:21.2700223Z         "unit"
2026-06-20T03:13:21.2700305Z       ],
2026-06-20T03:13:21.2700404Z       "stages": {
2026-06-20T03:13:21.2700485Z         "doc": {
2026-06-20T03:13:21.2700581Z           "complete": false,
2026-06-20T03:13:21.2700672Z           "evidence": []
2026-06-20T03:13:21.2700748Z         },
2026-06-20T03:13:21.2700833Z         "impl": {
2026-06-20T03:13:21.2700920Z           "complete": true,
2026-06-20T03:13:21.2701005Z           "evidence": [
2026-06-20T03:13:21.2701086Z             {
2026-06-20T03:13:21.2701211Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-20T03:13:21.2701302Z               "line": 86
2026-06-20T03:13:21.2701386Z             },
2026-06-20T03:13:21.2701467Z             {
2026-06-20T03:13:21.2701578Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-20T03:13:21.2701663Z               "line": 116
2026-06-20T03:13:21.2701738Z             },
2026-06-20T03:13:21.2701819Z             {
2026-06-20T03:13:21.2701934Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-20T03:13:21.2702018Z               "line": 130
2026-06-20T03:13:21.2702217Z             },
2026-06-20T03:13:21.2702294Z             {
2026-06-20T03:13:21.2702417Z               "path": "crates/spt-store/src/access.rs",
2026-06-20T03:13:21.2702595Z               "line": 109
2026-06-20T03:13:21.2702680Z             },
2026-06-20T03:13:21.2702765Z             {
2026-06-20T03:13:21.2702872Z               "path": "crates/spt-store/src/access.rs",
2026-06-20T03:13:21.2702962Z               "line": 130
2026-06-20T03:13:21.2703046Z             },
2026-06-20T03:13:21.2703119Z             {
2026-06-20T03:13:21.2703229Z               "path": "crates/spt-store/src/access.rs",
2026-06-20T03:13:21.2703320Z               "line": 143
2026-06-20T03:13:21.2703400Z             },
2026-06-20T03:13:21.2703482Z             {
2026-06-20T03:13:21.2703591Z               "path": "crates/spt-store/src/access.rs",
2026-06-20T03:13:21.2703672Z               "line": 209
2026-06-20T03:13:21.2703758Z             },
2026-06-20T03:13:21.2703840Z             {
2026-06-20T03:13:21.2703948Z               "path": "crates/spt-store/src/access.rs",
2026-06-20T03:13:21.2704044Z               "line": 235
2026-06-20T03:13:21.2704126Z             },
2026-06-20T03:13:21.2704202Z             {
2026-06-20T03:13:21.2704295Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2704390Z               "line": 5295
2026-06-20T03:13:21.2704467Z             }
2026-06-20T03:13:21.2704547Z           ]
2026-06-20T03:13:21.2704632Z         },
2026-06-20T03:13:21.2704707Z         "int": {
2026-06-20T03:13:21.2704799Z           "complete": false,
2026-06-20T03:13:21.2704881Z           "evidence": []
2026-06-20T03:13:21.2704965Z         },
2026-06-20T03:13:21.2705037Z         "unit": {
2026-06-20T03:13:21.2705128Z           "complete": true,
2026-06-20T03:13:21.2705219Z           "evidence": [
2026-06-20T03:13:21.2705299Z             {
2026-06-20T03:13:21.2705415Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-20T03:13:21.2705500Z               "line": 142
2026-06-20T03:13:21.2705589Z             },
2026-06-20T03:13:21.2705671Z             {
2026-06-20T03:13:21.2705786Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-20T03:13:21.2705881Z               "line": 194
2026-06-20T03:13:21.2705952Z             },
2026-06-20T03:13:21.2706039Z             {
2026-06-20T03:13:21.2706152Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-20T03:13:21.2706243Z               "line": 235
2026-06-20T03:13:21.2706330Z             },
2026-06-20T03:13:21.2706412Z             {
2026-06-20T03:13:21.2706534Z               "path": "crates/spt-daemon/tests/access.rs",
2026-06-20T03:13:21.2706615Z               "line": 140
2026-06-20T03:13:21.2706703Z             },
2026-06-20T03:13:21.2706782Z             {
2026-06-20T03:13:21.2706892Z               "path": "crates/spt-store/src/access.rs",
2026-06-20T03:13:21.2706984Z               "line": 247
2026-06-20T03:13:21.2707065Z             },
2026-06-20T03:13:21.2707148Z             {
2026-06-20T03:13:21.2707262Z               "path": "crates/spt-store/src/access.rs",
2026-06-20T03:13:21.2707354Z               "line": 277
2026-06-20T03:13:21.2707421Z             },
2026-06-20T03:13:21.2707501Z             {
2026-06-20T03:13:21.2707611Z               "path": "crates/spt-store/src/access.rs",
2026-06-20T03:13:21.2707697Z               "line": 310
2026-06-20T03:13:21.2707783Z             },
2026-06-20T03:13:21.2707863Z             {
2026-06-20T03:13:21.2707974Z               "path": "crates/spt-store/src/access.rs",
2026-06-20T03:13:21.2708055Z               "line": 329
2026-06-20T03:13:21.2708130Z             },
2026-06-20T03:13:21.2708211Z             {
2026-06-20T03:13:21.2708318Z               "path": "crates/spt-store/src/access.rs",
2026-06-20T03:13:21.2708402Z               "line": 362
2026-06-20T03:13:21.2708483Z             },
2026-06-20T03:13:21.2708565Z             {
2026-06-20T03:13:21.2708679Z               "path": "crates/spt-store/src/access.rs",
2026-06-20T03:13:21.2708765Z               "line": 386
2026-06-20T03:13:21.2708846Z             },
2026-06-20T03:13:21.2709103Z             {
2026-06-20T03:13:21.2709204Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2709445Z               "line": 8296
2026-06-20T03:13:21.2709536Z             }
2026-06-20T03:13:21.2709608Z           ]
2026-06-20T03:13:21.2709692Z         }
2026-06-20T03:13:21.2709781Z       }
2026-06-20T03:13:21.2709858Z     },
2026-06-20T03:13:21.2709945Z     {
2026-06-20T03:13:21.2710039Z       "id": "REQ-SEND-SPT-HOSTED",
2026-06-20T03:13:21.2713827Z       "title": "An inbound `spt send` is DELIVERED to an spt-hosted endpoint (brought up via `spt endpoint run` → `api bind`, broker holds its PTY, NO `api listen` relay). Today cmd_bind→establish_perch (api/startup.rs ~441) writes info.json + ready marker + controllable=Some(true) but registers NO message-listener / NO address, so deliver.rs resolve_address→None→spool (deliver.rs:132-140) and the message NEVER reaches the live PTY — the endpoint reads 'online' (ready marker) yet `spt send` silently SPOOLS ('online but not deliverable' lie). Per CONTEXT:187-188 the daemon owns the PTY and delivers, manifest-configurable per activity-state (direct PTY injection / relay / HTTP). FIX: route an inbound send for an spt-hosted target through the daemon → broker InputReq → session.write_input PTY-inject (broker.rs dispatch_input/write_input ~988-1022), the same path the brain uses; the live-delivery handshake must report Sent (not Queued) and stop the spool-only fallback for a broker-hosted, PTY-resident endpoint. Detection is local: controllable==Some(true) + spt-hosted state + resolve_address==None. = the spt-core HALF of the wall-b finding (perri owns the adapter half: bind-hook fired-zero-perch + the missing endpoint-run int test). (post-v0.10.0)",
2026-06-20T03:13:21.2713979Z       "requiredStages": [
2026-06-20T03:13:21.2714061Z         "impl",
2026-06-20T03:13:21.2714142Z         "unit",
2026-06-20T03:13:21.2714223Z         "int"
2026-06-20T03:13:21.2714289Z       ],
2026-06-20T03:13:21.2714376Z       "stages": {
2026-06-20T03:13:21.2714480Z         "doc": {
2026-06-20T03:13:21.2714580Z           "complete": false,
2026-06-20T03:13:21.2714696Z           "evidence": []
2026-06-20T03:13:21.2714776Z         },
2026-06-20T03:13:21.2714865Z         "impl": {
2026-06-20T03:13:21.2714946Z           "complete": true,
2026-06-20T03:13:21.2715027Z           "evidence": [
2026-06-20T03:13:21.2715107Z             {
2026-06-20T03:13:21.2715220Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T03:13:21.2715302Z               "line": 1018
2026-06-20T03:13:21.2715388Z             },
2026-06-20T03:13:21.2715474Z             {
2026-06-20T03:13:21.2715587Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.2715670Z               "line": 1674
2026-06-20T03:13:21.2715765Z             },
2026-06-20T03:13:21.2715840Z             {
2026-06-20T03:13:21.2715941Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2716022Z               "line": 2850
2026-06-20T03:13:21.2716108Z             }
2026-06-20T03:13:21.2716197Z           ]
2026-06-20T03:13:21.2716284Z         },
2026-06-20T03:13:21.2716366Z         "int": {
2026-06-20T03:13:21.2716465Z           "complete": true,
2026-06-20T03:13:21.2716555Z           "evidence": [
2026-06-20T03:13:21.2716638Z             {
2026-06-20T03:13:21.2716761Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-20T03:13:21.2716851Z               "line": 188
2026-06-20T03:13:21.2716933Z             },
2026-06-20T03:13:21.2717018Z             {
2026-06-20T03:13:21.2717132Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-20T03:13:21.2717225Z               "line": 506
2026-06-20T03:13:21.2717305Z             }
2026-06-20T03:13:21.2717389Z           ]
2026-06-20T03:13:21.2717461Z         },
2026-06-20T03:13:21.2717549Z         "unit": {
2026-06-20T03:13:21.2717644Z           "complete": true,
2026-06-20T03:13:21.2717723Z           "evidence": [
2026-06-20T03:13:21.2717808Z             {
2026-06-20T03:13:21.2717919Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-20T03:13:21.2718114Z               "line": 934
2026-06-20T03:13:21.2718248Z             },
2026-06-20T03:13:21.2718320Z             {
2026-06-20T03:13:21.2718423Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2718510Z               "line": 7486
2026-06-20T03:13:21.2718591Z             }
2026-06-20T03:13:21.2718663Z           ]
2026-06-20T03:13:21.2718752Z         }
2026-06-20T03:13:21.2718820Z       }
2026-06-20T03:13:21.2718901Z     },
2026-06-20T03:13:21.2719053Z     {
2026-06-20T03:13:21.2719159Z       "id": "REQ-SESSION-RESUME-TEMPLATE",
2026-06-20T03:13:21.2726053Z       "title": "Resuming an endpoint session that HAS conversation history brings up a BLANK session. ROOT (doyle, code-grounded + CONTEXT — case-3 spt-core MISSING feature, NOT a perri docs-miss): CONTEXT L127-129 already defines the resume-session seam ('continue-existing: resume an existing harness session under the adapter — its NATIVE resume'), and the manifest already has the resume-variant pattern (Session has BOTH psyche_init AND psyche_resume, manifest.rs:217-219) — but the agent's own session has ONLY self_ (`[session.self]`, no resume sibling). cmd_endpoint_run (cli.rs:1304) re-passes the session_id through `[session.self]` on resume (resume.unwrap_or_else(mint_session_id)), so the adapter's FRESH command (e.g. `claude --session-id ..`) runs again instead of the harness NATIVE resume (`claude -r ..`) -> CC starts a fresh transcript -> blank. spt-core forwards session_id + cwd faithfully; it just has no way to express the native-resume invocation. SECOND GAP: CC resolves a transcript by session_id + cwd, but the session ledger records only {ts, session_id, trigger} (no cwd), so picker Resume-from-history (cross-project rows) can't restore the right cwd. FIX (doyle design, V0.13.0-P2-SESSION-RESUME-DESIGN.md, mirrors psyche_init->psyche_resume exactly): (A) add a `[session.resume]` role (resume: Option<SessionRole> on Session + roles()/is_empty()); cmd_endpoint_run selects it when --resume is set AND it's declared (fill {id}/{session_id}=resumed id/{session_name} + the resume cwd), else FALL BACK to `[session.self]` (full back-compat). (B) record cwd PER ledger row (operator ruling): {ts, session_id, trigger, cwd} additive serde-default; resume cwd = resumed row cwd -> else perch info.cwd -> else current_dir (back-compat for old rows + single-project endpoints); picker threads the selected row's cwd through Outcome::Run -> cmd_endpoint_run. (C) public docs (MANIFEST + harness-contract) teach `[session.resume]` so perri builds the adapter side BLIND. Adapter follow-on (perri, AFTER spt-core ships+docs): declare `[session.resume] command = claude -r {session_id} --remote-control {id} --dangerously-skip-permissions` from the resume cwd. Completes REQ-READY-AGENT-RESUME / REQ-RUN-PICKER resume-from-history. (v0.13.0)",
2026-06-20T03:13:21.2726220Z       "requiredStages": [
2026-06-20T03:13:21.2726301Z         "doc",
2026-06-20T03:13:21.2726391Z         "impl",
2026-06-20T03:13:21.2726482Z         "unit",
2026-06-20T03:13:21.2726563Z         "int"
2026-06-20T03:13:21.2726649Z       ],
2026-06-20T03:13:21.2726739Z       "stages": {
2026-06-20T03:13:21.2726826Z         "doc": {
2026-06-20T03:13:21.2726916Z           "complete": true,
2026-06-20T03:13:21.2727007Z           "evidence": [
2026-06-20T03:13:21.2727097Z             {
2026-06-20T03:13:21.2727231Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-20T03:13:21.2727312Z               "line": 130
2026-06-20T03:13:21.2727387Z             },
2026-06-20T03:13:21.2727465Z             {
2026-06-20T03:13:21.2727555Z               "path": "docs/MANIFEST.md",
2026-06-20T03:13:21.2727655Z               "line": 96
2026-06-20T03:13:21.2727736Z             }
2026-06-20T03:13:21.2727818Z           ]
2026-06-20T03:13:21.2727903Z         },
2026-06-20T03:13:21.2727984Z         "impl": {
2026-06-20T03:13:21.2728080Z           "complete": true,
2026-06-20T03:13:21.2728166Z           "evidence": [
2026-06-20T03:13:21.2728364Z             {
2026-06-20T03:13:21.2728504Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-20T03:13:21.2728674Z               "line": 77
2026-06-20T03:13:21.2728770Z             },
2026-06-20T03:13:21.2728851Z             {
2026-06-20T03:13:21.2729041Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-20T03:13:21.2729128Z               "line": 183
2026-06-20T03:13:21.2729214Z             },
2026-06-20T03:13:21.2729293Z             {
2026-06-20T03:13:21.2729414Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.2729499Z               "line": 222
2026-06-20T03:13:21.2729580Z             },
2026-06-20T03:13:21.2729661Z             {
2026-06-20T03:13:21.2729781Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-20T03:13:21.2729861Z               "line": 71
2026-06-20T03:13:21.2729952Z             },
2026-06-20T03:13:21.2730020Z             {
2026-06-20T03:13:21.2730134Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T03:13:21.2730219Z               "line": 176
2026-06-20T03:13:21.2730301Z             }
2026-06-20T03:13:21.2730387Z           ]
2026-06-20T03:13:21.2730472Z         },
2026-06-20T03:13:21.2730552Z         "int": {
2026-06-20T03:13:21.2730642Z           "complete": true,
2026-06-20T03:13:21.2730723Z           "evidence": [
2026-06-20T03:13:21.2730803Z             {
2026-06-20T03:13:21.2730931Z               "path": "crates/spt/tests/resume_template_e2e.rs",
2026-06-20T03:13:21.2731012Z               "line": 25
2026-06-20T03:13:21.2731089Z             }
2026-06-20T03:13:21.2731174Z           ]
2026-06-20T03:13:21.2731250Z         },
2026-06-20T03:13:21.2731341Z         "unit": {
2026-06-20T03:13:21.2731422Z           "complete": true,
2026-06-20T03:13:21.2731503Z           "evidence": [
2026-06-20T03:13:21.2731584Z             {
2026-06-20T03:13:21.2731723Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-20T03:13:21.2731818Z               "line": 341
2026-06-20T03:13:21.2731947Z             },
2026-06-20T03:13:21.2732033Z             {
2026-06-20T03:13:21.2732156Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-20T03:13:21.2732247Z               "line": 391
2026-06-20T03:13:21.2732329Z             },
2026-06-20T03:13:21.2732404Z             {
2026-06-20T03:13:21.2732523Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.2732610Z               "line": 1244
2026-06-20T03:13:21.2732695Z             },
2026-06-20T03:13:21.2732777Z             {
2026-06-20T03:13:21.2732887Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-20T03:13:21.2732987Z               "line": 184
2026-06-20T03:13:21.2733062Z             },
2026-06-20T03:13:21.2733143Z             {
2026-06-20T03:13:21.2733250Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-20T03:13:21.2733339Z               "line": 208
2026-06-20T03:13:21.2733419Z             },
2026-06-20T03:13:21.2733504Z             {
2026-06-20T03:13:21.2733619Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-20T03:13:21.2733703Z               "line": 236
2026-06-20T03:13:21.2733793Z             },
2026-06-20T03:13:21.2733865Z             {
2026-06-20T03:13:21.2733980Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T03:13:21.2734065Z               "line": 945
2026-06-20T03:13:21.2734150Z             }
2026-06-20T03:13:21.2734233Z           ]
2026-06-20T03:13:21.2734314Z         }
2026-06-20T03:13:21.2734394Z       }
2026-06-20T03:13:21.2734475Z     },
2026-06-20T03:13:21.2734562Z     {
2026-06-20T03:13:21.2734643Z       "id": "REQ-SHELL-1",
2026-06-20T03:13:21.2735511Z       "title": "Shell hosting machinery: shell perch under the owner (type/owner/adapter_name/status/alias), broker-launched binary + api bind local-link handshake, the three channels (command durable, text+file durable + progress-queryable, sensory REST-only never spooled + dropped-unless-owner-live), owner exclusivity (CONTEXT Shell model)",
2026-06-20T03:13:21.2735720Z       "requiredStages": [
2026-06-20T03:13:21.2735802Z         "impl",
2026-06-20T03:13:21.2735882Z         "unit",
2026-06-20T03:13:21.2736081Z         "int"
2026-06-20T03:13:21.2736172Z       ],
2026-06-20T03:13:21.2736260Z       "stages": {
2026-06-20T03:13:21.2736341Z         "doc": {
2026-06-20T03:13:21.2736427Z           "complete": false,
2026-06-20T03:13:21.2736509Z           "evidence": []
2026-06-20T03:13:21.2736589Z         },
2026-06-20T03:13:21.2736665Z         "impl": {
2026-06-20T03:13:21.2736751Z           "complete": true,
2026-06-20T03:13:21.2736842Z           "evidence": [
2026-06-20T03:13:21.2736923Z             {
2026-06-20T03:13:21.2737047Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T03:13:21.2737137Z               "line": 189
2026-06-20T03:13:21.2737223Z             },
2026-06-20T03:13:21.2737304Z             {
2026-06-20T03:13:21.2737425Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T03:13:21.2737519Z               "line": 268
2026-06-20T03:13:21.2737609Z             },
2026-06-20T03:13:21.2737696Z             {
2026-06-20T03:13:21.2737815Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-20T03:13:21.2737910Z               "line": 27
2026-06-20T03:13:21.2737991Z             },
2026-06-20T03:13:21.2738078Z             {
2026-06-20T03:13:21.2738191Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-20T03:13:21.2738277Z               "line": 52
2026-06-20T03:13:21.2738354Z             },
2026-06-20T03:13:21.2738439Z             {
2026-06-20T03:13:21.2738558Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-20T03:13:21.2738641Z               "line": 144
2026-06-20T03:13:21.2738722Z             },
2026-06-20T03:13:21.2738806Z             {
2026-06-20T03:13:21.2738914Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-20T03:13:21.2739083Z               "line": 176
2026-06-20T03:13:21.2739163Z             },
2026-06-20T03:13:21.2739248Z             {
2026-06-20T03:13:21.2739373Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T03:13:21.2739454Z               "line": 22
2026-06-20T03:13:21.2739544Z             },
2026-06-20T03:13:21.2739626Z             {
2026-06-20T03:13:21.2739745Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T03:13:21.2739821Z               "line": 65
2026-06-20T03:13:21.2739897Z             },
2026-06-20T03:13:21.2739979Z             {
2026-06-20T03:13:21.2740093Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T03:13:21.2740174Z               "line": 76
2026-06-20T03:13:21.2740255Z             },
2026-06-20T03:13:21.2740341Z             {
2026-06-20T03:13:21.2740455Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T03:13:21.2740546Z               "line": 151
2026-06-20T03:13:21.2740628Z             },
2026-06-20T03:13:21.2740708Z             {
2026-06-20T03:13:21.2740827Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T03:13:21.2740914Z               "line": 210
2026-06-20T03:13:21.2740994Z             },
2026-06-20T03:13:21.2741079Z             {
2026-06-20T03:13:21.2741193Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T03:13:21.2741283Z               "line": 259
2026-06-20T03:13:21.2741373Z             },
2026-06-20T03:13:21.2741453Z             {
2026-06-20T03:13:21.2741558Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T03:13:21.2741644Z               "line": 281
2026-06-20T03:13:21.2741730Z             },
2026-06-20T03:13:21.2741810Z             {
2026-06-20T03:13:21.2741936Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T03:13:21.2742016Z               "line": 294
2026-06-20T03:13:21.2742101Z             },
2026-06-20T03:13:21.2742183Z             {
2026-06-20T03:13:21.2742302Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.2742383Z               "line": 217
2026-06-20T03:13:21.2742473Z             },
2026-06-20T03:13:21.2742565Z             {
2026-06-20T03:13:21.2742774Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.2742860Z               "line": 233
2026-06-20T03:13:21.2743036Z             },
2026-06-20T03:13:21.2743122Z             {
2026-06-20T03:13:21.2743237Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-20T03:13:21.2743332Z               "line": 41
2026-06-20T03:13:21.2743418Z             },
2026-06-20T03:13:21.2743490Z             {
2026-06-20T03:13:21.2743613Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-20T03:13:21.2743699Z               "line": 222
2026-06-20T03:13:21.2743786Z             },
2026-06-20T03:13:21.2743862Z             {
2026-06-20T03:13:21.2743974Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T03:13:21.2744055Z               "line": 173
2026-06-20T03:13:21.2744132Z             },
2026-06-20T03:13:21.2744212Z             {
2026-06-20T03:13:21.2744320Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T03:13:21.2744401Z               "line": 354
2026-06-20T03:13:21.2744488Z             },
2026-06-20T03:13:21.2744574Z             {
2026-06-20T03:13:21.2744687Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T03:13:21.2744774Z               "line": 419
2026-06-20T03:13:21.2744859Z             },
2026-06-20T03:13:21.2744931Z             {
2026-06-20T03:13:21.2745055Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.2745151Z               "line": 333
2026-06-20T03:13:21.2745227Z             },
2026-06-20T03:13:21.2745316Z             {
2026-06-20T03:13:21.2745418Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2745507Z               "line": 6320
2026-06-20T03:13:21.2745593Z             },
2026-06-20T03:13:21.2745674Z             {
2026-06-20T03:13:21.2745780Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2745864Z               "line": 6470
2026-06-20T03:13:21.2745951Z             },
2026-06-20T03:13:21.2746029Z             {
2026-06-20T03:13:21.2746137Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2746228Z               "line": 6646
2026-06-20T03:13:21.2746319Z             }
2026-06-20T03:13:21.2746405Z           ]
2026-06-20T03:13:21.2746485Z         },
2026-06-20T03:13:21.2746575Z         "int": {
2026-06-20T03:13:21.2746656Z           "complete": true,
2026-06-20T03:13:21.2746742Z           "evidence": [
2026-06-20T03:13:21.2746825Z             {
2026-06-20T03:13:21.2746948Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-20T03:13:21.2747045Z               "line": 713
2026-06-20T03:13:21.2747126Z             },
2026-06-20T03:13:21.2747216Z             {
2026-06-20T03:13:21.2747336Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-20T03:13:21.2747426Z               "line": 8
2026-06-20T03:13:21.2747516Z             },
2026-06-20T03:13:21.2747602Z             {
2026-06-20T03:13:21.2747726Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-20T03:13:21.2747807Z               "line": 49
2026-06-20T03:13:21.2747893Z             },
2026-06-20T03:13:21.2747965Z             {
2026-06-20T03:13:21.2748098Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T03:13:21.2748184Z               "line": 778
2026-06-20T03:13:21.2748266Z             },
2026-06-20T03:13:21.2748342Z             {
2026-06-20T03:13:21.2748460Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T03:13:21.2748551Z               "line": 1213
2026-06-20T03:13:21.2748633Z             },
2026-06-20T03:13:21.2748718Z             {
2026-06-20T03:13:21.2748837Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-20T03:13:21.2748919Z               "line": 17
2026-06-20T03:13:21.2749080Z             },
2026-06-20T03:13:21.2749162Z             {
2026-06-20T03:13:21.2749277Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-20T03:13:21.2749361Z               "line": 14
2026-06-20T03:13:21.2749461Z             }
2026-06-20T03:13:21.2749542Z           ]
2026-06-20T03:13:21.2749737Z         },
2026-06-20T03:13:21.2749818Z         "unit": {
2026-06-20T03:13:21.2749910Z           "complete": true,
2026-06-20T03:13:21.2750095Z           "evidence": [
2026-06-20T03:13:21.2750176Z             {
2026-06-20T03:13:21.2750300Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-20T03:13:21.2750381Z               "line": 246
2026-06-20T03:13:21.2750467Z             },
2026-06-20T03:13:21.2750559Z             {
2026-06-20T03:13:21.2750663Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-20T03:13:21.2750753Z               "line": 279
2026-06-20T03:13:21.2750825Z             },
2026-06-20T03:13:21.2750911Z             {
2026-06-20T03:13:21.2751025Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-20T03:13:21.2751111Z               "line": 319
2026-06-20T03:13:21.2751193Z             },
2026-06-20T03:13:21.2751273Z             {
2026-06-20T03:13:21.2751392Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T03:13:21.2751489Z               "line": 599
2026-06-20T03:13:21.2751564Z             },
2026-06-20T03:13:21.2751644Z             {
2026-06-20T03:13:21.2751772Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T03:13:21.2751853Z               "line": 672
2026-06-20T03:13:21.2751933Z             },
2026-06-20T03:13:21.2752013Z             {
2026-06-20T03:13:21.2752128Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T03:13:21.2752224Z               "line": 816
2026-06-20T03:13:21.2752314Z             },
2026-06-20T03:13:21.2752395Z             {
2026-06-20T03:13:21.2752500Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.2752585Z               "line": 595
2026-06-20T03:13:21.2752671Z             },
2026-06-20T03:13:21.2752753Z             {
2026-06-20T03:13:21.2752877Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-20T03:13:21.2752962Z               "line": 399
2026-06-20T03:13:21.2753039Z             },
2026-06-20T03:13:21.2753134Z             {
2026-06-20T03:13:21.2753239Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2753329Z               "line": 8976
2026-06-20T03:13:21.2753412Z             },
2026-06-20T03:13:21.2753487Z             {
2026-06-20T03:13:21.2753587Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2753683Z               "line": 9300
2026-06-20T03:13:21.2753759Z             },
2026-06-20T03:13:21.2753835Z             {
2026-06-20T03:13:21.2753944Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2754032Z               "line": 9717
2026-06-20T03:13:21.2754117Z             }
2026-06-20T03:13:21.2754202Z           ]
2026-06-20T03:13:21.2754283Z         }
2026-06-20T03:13:21.2754375Z       }
2026-06-20T03:13:21.2754450Z     },
2026-06-20T03:13:21.2754535Z     {
2026-06-20T03:13:21.2754620Z       "id": "REQ-SHELL-2",
2026-06-20T03:13:21.2756077Z       "title": "Shell sleep/wake: link-break always closes the binary (pre-close instruction + termination timeout), ephemeral teardown vs persistent offline/relink, wake_command wake-watcher (offline-only, exit-opcode supervision, exponential backoff + give-up), state-keyed wake resolution (dormant/suspended/active-elsewhere; no-reachable refuses — spawn-anywhere branch deferred), spt shutdown owner cascade + api owner-shutdown gated by can_shutdown (CONTEXT Shell sleep/wake)",
2026-06-20T03:13:21.2756172Z       "requiredStages": [
2026-06-20T03:13:21.2756249Z         "impl",
2026-06-20T03:13:21.2756335Z         "unit",
2026-06-20T03:13:21.2756420Z         "int"
2026-06-20T03:13:21.2756506Z       ],
2026-06-20T03:13:21.2756594Z       "stages": {
2026-06-20T03:13:21.2756674Z         "doc": {
2026-06-20T03:13:21.2756773Z           "complete": false,
2026-06-20T03:13:21.2756865Z           "evidence": []
2026-06-20T03:13:21.2756951Z         },
2026-06-20T03:13:21.2757036Z         "impl": {
2026-06-20T03:13:21.2757130Z           "complete": true,
2026-06-20T03:13:21.2757221Z           "evidence": [
2026-06-20T03:13:21.2757405Z             {
2026-06-20T03:13:21.2757528Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.2757696Z               "line": 217
2026-06-20T03:13:21.2757785Z             },
2026-06-20T03:13:21.2757857Z             {
2026-06-20T03:13:21.2757977Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-20T03:13:21.2758062Z               "line": 403
2026-06-20T03:13:21.2758143Z             },
2026-06-20T03:13:21.2758230Z             {
2026-06-20T03:13:21.2758344Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T03:13:21.2758424Z               "line": 250
2026-06-20T03:13:21.2758507Z             },
2026-06-20T03:13:21.2758597Z             {
2026-06-20T03:13:21.2758720Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.2758801Z               "line": 403
2026-06-20T03:13:21.2758888Z             },
2026-06-20T03:13:21.2759035Z             {
2026-06-20T03:13:21.2759160Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T03:13:21.2759259Z               "line": 30
2026-06-20T03:13:21.2759331Z             },
2026-06-20T03:13:21.2759422Z             {
2026-06-20T03:13:21.2759537Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T03:13:21.2759616Z               "line": 409
2026-06-20T03:13:21.2759702Z             },
2026-06-20T03:13:21.2759785Z             {
2026-06-20T03:13:21.2759908Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T03:13:21.2759992Z               "line": 445
2026-06-20T03:13:21.2760073Z             },
2026-06-20T03:13:21.2760150Z             {
2026-06-20T03:13:21.2760269Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T03:13:21.2760355Z               "line": 660
2026-06-20T03:13:21.2760441Z             },
2026-06-20T03:13:21.2760522Z             {
2026-06-20T03:13:21.2760645Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T03:13:21.2760737Z               "line": 348
2026-06-20T03:13:21.2760814Z             },
2026-06-20T03:13:21.2760909Z             {
2026-06-20T03:13:21.2761017Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-20T03:13:21.2761109Z               "line": 115
2026-06-20T03:13:21.2761189Z             },
2026-06-20T03:13:21.2761270Z             {
2026-06-20T03:13:21.2761390Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T03:13:21.2761476Z               "line": 120
2026-06-20T03:13:21.2761552Z             },
2026-06-20T03:13:21.2761633Z             {
2026-06-20T03:13:21.2761758Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T03:13:21.2761847Z               "line": 374
2026-06-20T03:13:21.2761928Z             },
2026-06-20T03:13:21.2762015Z             {
2026-06-20T03:13:21.2762129Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T03:13:21.2762214Z               "line": 500
2026-06-20T03:13:21.2762289Z             },
2026-06-20T03:13:21.2762380Z             {
2026-06-20T03:13:21.2762493Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T03:13:21.2762583Z               "line": 24
2026-06-20T03:13:21.2762664Z             },
2026-06-20T03:13:21.2762751Z             {
2026-06-20T03:13:21.2762874Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T03:13:21.2762955Z               "line": 76
2026-06-20T03:13:21.2763046Z             },
2026-06-20T03:13:21.2763118Z             {
2026-06-20T03:13:21.2763274Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T03:13:21.2763361Z               "line": 154
2026-06-20T03:13:21.2763442Z             },
2026-06-20T03:13:21.2763527Z             {
2026-06-20T03:13:21.2763638Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T03:13:21.2763718Z               "line": 177
2026-06-20T03:13:21.2763804Z             },
2026-06-20T03:13:21.2763880Z             {
2026-06-20T03:13:21.2763991Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T03:13:21.2764071Z               "line": 273
2026-06-20T03:13:21.2764267Z             },
2026-06-20T03:13:21.2764352Z             {
2026-06-20T03:13:21.2764457Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T03:13:21.2764667Z               "line": 456
2026-06-20T03:13:21.2764752Z             },
2026-06-20T03:13:21.2764834Z             {
2026-06-20T03:13:21.2764945Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T03:13:21.2765038Z               "line": 538
2026-06-20T03:13:21.2765124Z             },
2026-06-20T03:13:21.2765195Z             {
2026-06-20T03:13:21.2765309Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-20T03:13:21.2765398Z               "line": 27
2026-06-20T03:13:21.2765483Z             },
2026-06-20T03:13:21.2765560Z             {
2026-06-20T03:13:21.2765684Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-20T03:13:21.2765765Z               "line": 48
2026-06-20T03:13:21.2765851Z             },
2026-06-20T03:13:21.2765932Z             {
2026-06-20T03:13:21.2766046Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.2766166Z               "line": 517
2026-06-20T03:13:21.2766252Z             },
2026-06-20T03:13:21.2766342Z             {
2026-06-20T03:13:21.2766451Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2766539Z               "line": 1921
2026-06-20T03:13:21.2766628Z             },
2026-06-20T03:13:21.2766709Z             {
2026-06-20T03:13:21.2766814Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2766900Z               "line": 6334
2026-06-20T03:13:21.2766985Z             },
2026-06-20T03:13:21.2767067Z             {
2026-06-20T03:13:21.2767168Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2767253Z               "line": 6395
2026-06-20T03:13:21.2767338Z             },
2026-06-20T03:13:21.2767420Z             {
2026-06-20T03:13:21.2767525Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2767605Z               "line": 6423
2026-06-20T03:13:21.2767685Z             },
2026-06-20T03:13:21.2767781Z             {
2026-06-20T03:13:21.2767885Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2767970Z               "line": 6477
2026-06-20T03:13:21.2768055Z             },
2026-06-20T03:13:21.2768132Z             {
2026-06-20T03:13:21.2768228Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2768317Z               "line": 6732
2026-06-20T03:13:21.2768398Z             },
2026-06-20T03:13:21.2768480Z             {
2026-06-20T03:13:21.2768576Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2768669Z               "line": 6792
2026-06-20T03:13:21.2768747Z             },
2026-06-20T03:13:21.2768838Z             {
2026-06-20T03:13:21.2772188Z               "path": "crates/spt/src/wansend.rs",
2026-06-20T03:13:21.2772294Z               "line": 298
2026-06-20T03:13:21.2772389Z             },
2026-06-20T03:13:21.2772460Z             {
2026-06-20T03:13:21.2772585Z               "path": "crates/spt/src/wansend.rs",
2026-06-20T03:13:21.2772680Z               "line": 339
2026-06-20T03:13:21.2772774Z             }
2026-06-20T03:13:21.2772859Z           ]
2026-06-20T03:13:21.2772945Z         },
2026-06-20T03:13:21.2773026Z         "int": {
2026-06-20T03:13:21.2773124Z           "complete": true,
2026-06-20T03:13:21.2773220Z           "evidence": [
2026-06-20T03:13:21.2773297Z             {
2026-06-20T03:13:21.2773429Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-20T03:13:21.2773515Z               "line": 706
2026-06-20T03:13:21.2773597Z             },
2026-06-20T03:13:21.2773678Z             {
2026-06-20T03:13:21.2773796Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T03:13:21.2773888Z               "line": 778
2026-06-20T03:13:21.2773968Z             },
2026-06-20T03:13:21.2774049Z             {
2026-06-20T03:13:21.2774169Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T03:13:21.2774255Z               "line": 1213
2026-06-20T03:13:21.2774336Z             },
2026-06-20T03:13:21.2774556Z             {
2026-06-20T03:13:21.2774693Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-20T03:13:21.2774880Z               "line": 18
2026-06-20T03:13:21.2774960Z             }
2026-06-20T03:13:21.2775041Z           ]
2026-06-20T03:13:21.2775123Z         },
2026-06-20T03:13:21.2775204Z         "unit": {
2026-06-20T03:13:21.2775298Z           "complete": true,
2026-06-20T03:13:21.2775389Z           "evidence": [
2026-06-20T03:13:21.2775471Z             {
2026-06-20T03:13:21.2775590Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T03:13:21.2775679Z               "line": 744
2026-06-20T03:13:21.2775760Z             },
2026-06-20T03:13:21.2775837Z             {
2026-06-20T03:13:21.2775953Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T03:13:21.2776034Z               "line": 796
2026-06-20T03:13:21.2776125Z             },
2026-06-20T03:13:21.2776197Z             {
2026-06-20T03:13:21.2776325Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T03:13:21.2776416Z               "line": 705
2026-06-20T03:13:21.2776502Z             },
2026-06-20T03:13:21.2776592Z             {
2026-06-20T03:13:21.2776711Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T03:13:21.2776803Z               "line": 754
2026-06-20T03:13:21.2776884Z             },
2026-06-20T03:13:21.2776968Z             {
2026-06-20T03:13:21.2777079Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T03:13:21.2777169Z               "line": 778
2026-06-20T03:13:21.2777245Z             },
2026-06-20T03:13:21.2777331Z             {
2026-06-20T03:13:21.2777438Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T03:13:21.2777527Z               "line": 603
2026-06-20T03:13:21.2777612Z             },
2026-06-20T03:13:21.2777690Z             {
2026-06-20T03:13:21.2777808Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T03:13:21.2777899Z               "line": 624
2026-06-20T03:13:21.2777985Z             },
2026-06-20T03:13:21.2778067Z             {
2026-06-20T03:13:21.2778175Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T03:13:21.2778269Z               "line": 660
2026-06-20T03:13:21.2778350Z             },
2026-06-20T03:13:21.2778422Z             {
2026-06-20T03:13:21.2778530Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T03:13:21.2778610Z               "line": 714
2026-06-20T03:13:21.2778692Z             },
2026-06-20T03:13:21.2778774Z             {
2026-06-20T03:13:21.2778897Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T03:13:21.2779079Z               "line": 732
2026-06-20T03:13:21.2779159Z             },
2026-06-20T03:13:21.2779235Z             {
2026-06-20T03:13:21.2779351Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T03:13:21.2779436Z               "line": 766
2026-06-20T03:13:21.2779511Z             },
2026-06-20T03:13:21.2779598Z             {
2026-06-20T03:13:21.2779707Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T03:13:21.2779788Z               "line": 841
2026-06-20T03:13:21.2779879Z             },
2026-06-20T03:13:21.2779946Z             {
2026-06-20T03:13:21.2780065Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-20T03:13:21.2780141Z               "line": 85
2026-06-20T03:13:21.2780222Z             },
2026-06-20T03:13:21.2780300Z             {
2026-06-20T03:13:21.2780403Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2780499Z               "line": 8044
2026-06-20T03:13:21.2780571Z             },
2026-06-20T03:13:21.2780652Z             {
2026-06-20T03:13:21.2780751Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2780833Z               "line": 9054
2026-06-20T03:13:21.2780900Z             },
2026-06-20T03:13:21.2780981Z             {
2026-06-20T03:13:21.2781080Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2781160Z               "line": 9124
2026-06-20T03:13:21.2781348Z             },
2026-06-20T03:13:21.2781428Z             {
2026-06-20T03:13:21.2781532Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2781709Z               "line": 9162
2026-06-20T03:13:21.2781785Z             }
2026-06-20T03:13:21.2781872Z           ]
2026-06-20T03:13:21.2781953Z         }
2026-06-20T03:13:21.2782034Z       }
2026-06-20T03:13:21.2782114Z     },
2026-06-20T03:13:21.2782196Z     {
2026-06-20T03:13:21.2782277Z       "id": "REQ-SHELL-3",
2026-06-20T03:13:21.2784124Z       "title": "Drive channel (owner->shell, REST-only, never-spooled, latest-wins): the owner->shell mirror of sensory for continuous real-time control (scroll/crank/stick/avatar) — a [shell.drive] manifest vocab + EVENT_TYPE_DRIVE frame, delivered to the ONLINE binary only via a single live slot (a new frame supersedes an undelivered one — no spool, no queue, no replay on relink), dropped-with-diagnostic if the shell is offline; cross-node rides the ephemeral link (REST class), never the durable shell spool. Commands = discrete+durable; drive = continuous+ephemeral (CONTEXT:260, minted 2026-06-11 Gateway grill).",
2026-06-20T03:13:21.2784248Z       "requiredStages": [
2026-06-20T03:13:21.2784328Z         "impl",
2026-06-20T03:13:21.2784409Z         "unit",
2026-06-20T03:13:21.2784496Z         "int"
2026-06-20T03:13:21.2784577Z       ],
2026-06-20T03:13:21.2784661Z       "stages": {
2026-06-20T03:13:21.2784739Z         "doc": {
2026-06-20T03:13:21.2784834Z           "complete": false,
2026-06-20T03:13:21.2784920Z           "evidence": []
2026-06-20T03:13:21.2785000Z         },
2026-06-20T03:13:21.2785092Z         "impl": {
2026-06-20T03:13:21.2785168Z           "complete": true,
2026-06-20T03:13:21.2785253Z           "evidence": [
2026-06-20T03:13:21.2785339Z             {
2026-06-20T03:13:21.2785464Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.2785548Z               "line": 229
2026-06-20T03:13:21.2785620Z             },
2026-06-20T03:13:21.2785703Z             {
2026-06-20T03:13:21.2785830Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-20T03:13:21.2785921Z               "line": 36
2026-06-20T03:13:21.2786012Z             },
2026-06-20T03:13:21.2786094Z             {
2026-06-20T03:13:21.2786206Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-20T03:13:21.2786301Z               "line": 137
2026-06-20T03:13:21.2786382Z             },
2026-06-20T03:13:21.2786462Z             {
2026-06-20T03:13:21.2786580Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-20T03:13:21.2786662Z               "line": 153
2026-06-20T03:13:21.2786748Z             },
2026-06-20T03:13:21.2786829Z             {
2026-06-20T03:13:21.2786933Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-20T03:13:21.2787029Z               "line": 165
2026-06-20T03:13:21.2787105Z             },
2026-06-20T03:13:21.2787190Z             {
2026-06-20T03:13:21.2787306Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-20T03:13:21.2787401Z               "line": 242
2026-06-20T03:13:21.2787473Z             },
2026-06-20T03:13:21.2787552Z             {
2026-06-20T03:13:21.2787683Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-20T03:13:21.2787762Z               "line": 267
2026-06-20T03:13:21.2787839Z             },
2026-06-20T03:13:21.2787915Z             {
2026-06-20T03:13:21.2788031Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-20T03:13:21.2788115Z               "line": 293
2026-06-20T03:13:21.2788197Z             },
2026-06-20T03:13:21.2788279Z             {
2026-06-20T03:13:21.2788383Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-20T03:13:21.2788464Z               "line": 51
2026-06-20T03:13:21.2788550Z             },
2026-06-20T03:13:21.2788637Z             {
2026-06-20T03:13:21.2788749Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T03:13:21.2788839Z               "line": 333
2026-06-20T03:13:21.2788916Z             },
2026-06-20T03:13:21.2789085Z             {
2026-06-20T03:13:21.2789314Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T03:13:21.2789543Z               "line": 373
2026-06-20T03:13:21.2789629Z             },
2026-06-20T03:13:21.2789715Z             {
2026-06-20T03:13:21.2789824Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T03:13:21.2789911Z               "line": 602
2026-06-20T03:13:21.2789982Z             },
2026-06-20T03:13:21.2790053Z             {
2026-06-20T03:13:21.2790163Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-20T03:13:21.2790250Z               "line": 132
2026-06-20T03:13:21.2790334Z             },
2026-06-20T03:13:21.2790410Z             {
2026-06-20T03:13:21.2790521Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T03:13:21.2790602Z               "line": 448
2026-06-20T03:13:21.2790687Z             },
2026-06-20T03:13:21.2790764Z             {
2026-06-20T03:13:21.2790870Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T03:13:21.2790968Z               "line": 74
2026-06-20T03:13:21.2791044Z             },
2026-06-20T03:13:21.2791127Z             {
2026-06-20T03:13:21.2791246Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.2791336Z               "line": 605
2026-06-20T03:13:21.2791417Z             },
2026-06-20T03:13:21.2791494Z             {
2026-06-20T03:13:21.2791611Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.2791697Z               "line": 396
2026-06-20T03:13:21.2791783Z             },
2026-06-20T03:13:21.2791855Z             {
2026-06-20T03:13:21.2791959Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2792045Z               "line": 6518
2026-06-20T03:13:21.2792131Z             }
2026-06-20T03:13:21.2792212Z           ]
2026-06-20T03:13:21.2792293Z         },
2026-06-20T03:13:21.2792373Z         "int": {
2026-06-20T03:13:21.2792456Z           "complete": true,
2026-06-20T03:13:21.2792546Z           "evidence": [
2026-06-20T03:13:21.2792631Z             {
2026-06-20T03:13:21.2792751Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T03:13:21.2792856Z               "line": 1262
2026-06-20T03:13:21.2792937Z             },
2026-06-20T03:13:21.2793022Z             {
2026-06-20T03:13:21.2793128Z               "path": "crates/spt/tests/drive_e2e.rs",
2026-06-20T03:13:21.2793213Z               "line": 17
2026-06-20T03:13:21.2793294Z             }
2026-06-20T03:13:21.2793376Z           ]
2026-06-20T03:13:21.2793457Z         },
2026-06-20T03:13:21.2793537Z         "unit": {
2026-06-20T03:13:21.2793623Z           "complete": true,
2026-06-20T03:13:21.2793700Z           "evidence": [
2026-06-20T03:13:21.2793786Z             {
2026-06-20T03:13:21.2793904Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-20T03:13:21.2793984Z               "line": 311
2026-06-20T03:13:21.2794061Z             },
2026-06-20T03:13:21.2794141Z             {
2026-06-20T03:13:21.2794249Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-20T03:13:21.2794345Z               "line": 325
2026-06-20T03:13:21.2794432Z             },
2026-06-20T03:13:21.2794517Z             {
2026-06-20T03:13:21.2794636Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-20T03:13:21.2794717Z               "line": 343
2026-06-20T03:13:21.2794798Z             },
2026-06-20T03:13:21.2794874Z             {
2026-06-20T03:13:21.2794984Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-20T03:13:21.2795075Z               "line": 364
2026-06-20T03:13:21.2795155Z             },
2026-06-20T03:13:21.2795231Z             {
2026-06-20T03:13:21.2795338Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-20T03:13:21.2795423Z               "line": 376
2026-06-20T03:13:21.2795508Z             },
2026-06-20T03:13:21.2795589Z             {
2026-06-20T03:13:21.2795704Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T03:13:21.2795790Z               "line": 897
2026-06-20T03:13:21.2795870Z             },
2026-06-20T03:13:21.2796057Z             {
2026-06-20T03:13:21.2796162Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T03:13:21.2796324Z               "line": 957
2026-06-20T03:13:21.2796404Z             },
2026-06-20T03:13:21.2796491Z             {
2026-06-20T03:13:21.2796602Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-20T03:13:21.2796687Z               "line": 338
2026-06-20T03:13:21.2796776Z             },
2026-06-20T03:13:21.2796856Z             {
2026-06-20T03:13:21.2796971Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T03:13:21.2797060Z               "line": 769
2026-06-20T03:13:21.2797149Z             },
2026-06-20T03:13:21.2797246Z             {
2026-06-20T03:13:21.2797337Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2797431Z               "line": 8836
2026-06-20T03:13:21.2797508Z             }
2026-06-20T03:13:21.2797585Z           ]
2026-06-20T03:13:21.2797665Z         }
2026-06-20T03:13:21.2797756Z       }
2026-06-20T03:13:21.2797846Z     },
2026-06-20T03:13:21.2797928Z     {
2026-06-20T03:13:21.2798019Z       "id": "REQ-SHELL-4",
2026-06-20T03:13:21.2799870Z       "title": "Shell tunnel (reliable-ordered opaque byte stream): an owner<->shell link may hold a long-lived, reliable-ordered, link-bound QUIC stream pair carrying opaque wire protocol traffic the channel taxonomy must NOT reinterpret (first consumer usbip URB) — manifest opt-in, not enveloped, not MAC-framed, not spooled; the link lifecycle governs it (a link-break closes the tunnel). Reliable-ordered ⇒ congestion surfaces as lag never loss ⇒ acceptable only on-LAN: the on-LAN posture is documented and the tunnel is NOT proven cross-WAN (CONTEXT:262, minted 2026-06-11 Gateway grill; doyle gate C2).",
2026-06-20T03:13:21.2799974Z       "requiredStages": [
2026-06-20T03:13:21.2800060Z         "doc",
2026-06-20T03:13:21.2800132Z         "impl",
2026-06-20T03:13:21.2800213Z         "unit",
2026-06-20T03:13:21.2800289Z         "int"
2026-06-20T03:13:21.2800408Z       ],
2026-06-20T03:13:21.2800490Z       "stages": {
2026-06-20T03:13:21.2800566Z         "doc": {
2026-06-20T03:13:21.2800660Z           "complete": true,
2026-06-20T03:13:21.2800748Z           "evidence": [
2026-06-20T03:13:21.2800828Z             {
2026-06-20T03:13:21.2800914Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.2800994Z               "line": 281
2026-06-20T03:13:21.2801081Z             },
2026-06-20T03:13:21.2801153Z             {
2026-06-20T03:13:21.2801377Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-20T03:13:21.2801463Z               "line": 88
2026-06-20T03:13:21.2801547Z             }
2026-06-20T03:13:21.2801614Z           ]
2026-06-20T03:13:21.2801697Z         },
2026-06-20T03:13:21.2801787Z         "impl": {
2026-06-20T03:13:21.2801876Z           "complete": true,
2026-06-20T03:13:21.2801963Z           "evidence": [
2026-06-20T03:13:21.2802040Z             {
2026-06-20T03:13:21.2802168Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.2802248Z               "line": 243
2026-06-20T03:13:21.2802334Z             },
2026-06-20T03:13:21.2802406Z             {
2026-06-20T03:13:21.2802524Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-20T03:13:21.2802610Z               "line": 61
2026-06-20T03:13:21.2802691Z             },
2026-06-20T03:13:21.2802772Z             {
2026-06-20T03:13:21.2802886Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T03:13:21.2802973Z               "line": 218
2026-06-20T03:13:21.2803055Z             },
2026-06-20T03:13:21.2803136Z             {
2026-06-20T03:13:21.2803244Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T03:13:21.2803321Z               "line": 245
2026-06-20T03:13:21.2803397Z             },
2026-06-20T03:13:21.2803478Z             {
2026-06-20T03:13:21.2803602Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T03:13:21.2803689Z               "line": 566
2026-06-20T03:13:21.2803878Z             },
2026-06-20T03:13:21.2803961Z             {
2026-06-20T03:13:21.2804074Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T03:13:21.2804246Z               "line": 1141
2026-06-20T03:13:21.2804328Z             },
2026-06-20T03:13:21.2804412Z             {
2026-06-20T03:13:21.2804530Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T03:13:21.2804612Z               "line": 1153
2026-06-20T03:13:21.2804697Z             },
2026-06-20T03:13:21.2804772Z             {
2026-06-20T03:13:21.2804881Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T03:13:21.2804963Z               "line": 1194
2026-06-20T03:13:21.2805049Z             },
2026-06-20T03:13:21.2805134Z             {
2026-06-20T03:13:21.2805239Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T03:13:21.2805325Z               "line": 456
2026-06-20T03:13:21.2805410Z             },
2026-06-20T03:13:21.2805496Z             {
2026-06-20T03:13:21.2805616Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-20T03:13:21.2805706Z               "line": 44
2026-06-20T03:13:21.2805792Z             },
2026-06-20T03:13:21.2805869Z             {
2026-06-20T03:13:21.2805988Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-20T03:13:21.2806068Z               "line": 208
2026-06-20T03:13:21.2806154Z             },
2026-06-20T03:13:21.2806241Z             {
2026-06-20T03:13:21.2806360Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-20T03:13:21.2806450Z               "line": 227
2026-06-20T03:13:21.2806532Z             },
2026-06-20T03:13:21.2806617Z             {
2026-06-20T03:13:21.2806726Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-20T03:13:21.2806823Z               "line": 253
2026-06-20T03:13:21.2806904Z             },
2026-06-20T03:13:21.2806988Z             {
2026-06-20T03:13:21.2807104Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-20T03:13:21.2807186Z               "line": 272
2026-06-20T03:13:21.2807279Z             },
2026-06-20T03:13:21.2807360Z             {
2026-06-20T03:13:21.2807479Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-20T03:13:21.2807564Z               "line": 392
2026-06-20T03:13:21.2807644Z             },
2026-06-20T03:13:21.2807719Z             {
2026-06-20T03:13:21.2807835Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-20T03:13:21.2807916Z               "line": 421
2026-06-20T03:13:21.2807996Z             },
2026-06-20T03:13:21.2808082Z             {
2026-06-20T03:13:21.2808202Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-20T03:13:21.2808273Z               "line": 439
2026-06-20T03:13:21.2808363Z             },
2026-06-20T03:13:21.2808441Z             {
2026-06-20T03:13:21.2808550Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-20T03:13:21.2808635Z               "line": 458
2026-06-20T03:13:21.2808712Z             },
2026-06-20T03:13:21.2808798Z             {
2026-06-20T03:13:21.2808917Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-20T03:13:21.2809075Z               "line": 486
2026-06-20T03:13:21.2809165Z             },
2026-06-20T03:13:21.2809245Z             {
2026-06-20T03:13:21.2809356Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.2809442Z               "line": 624
2026-06-20T03:13:21.2809531Z             },
2026-06-20T03:13:21.2809608Z             {
2026-06-20T03:13:21.2809724Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.2809804Z               "line": 829
2026-06-20T03:13:21.2809889Z             },
2026-06-20T03:13:21.2809969Z             {
2026-06-20T03:13:21.2810084Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.2810173Z               "line": 435
2026-06-20T03:13:21.2810253Z             },
2026-06-20T03:13:21.2810334Z             {
2026-06-20T03:13:21.2810435Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2810535Z               "line": 6574
2026-06-20T03:13:21.2810716Z             }
2026-06-20T03:13:21.2810797Z           ]
2026-06-20T03:13:21.2810973Z         },
2026-06-20T03:13:21.2811050Z         "int": {
2026-06-20T03:13:21.2811150Z           "complete": true,
2026-06-20T03:13:21.2811235Z           "evidence": [
2026-06-20T03:13:21.2811313Z             {
2026-06-20T03:13:21.2811431Z               "path": "crates/spt/tests/tunnel_e2e.rs",
2026-06-20T03:13:21.2811517Z               "line": 18
2026-06-20T03:13:21.2811603Z             }
2026-06-20T03:13:21.2811685Z           ]
2026-06-20T03:13:21.2811770Z         },
2026-06-20T03:13:21.2811851Z         "unit": {
2026-06-20T03:13:21.2811957Z           "complete": true,
2026-06-20T03:13:21.2812046Z           "evidence": [
2026-06-20T03:13:21.2812127Z             {
2026-06-20T03:13:21.2812247Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T03:13:21.2812333Z               "line": 1391
2026-06-20T03:13:21.2812423Z             },
2026-06-20T03:13:21.2812508Z             {
2026-06-20T03:13:21.2812629Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T03:13:21.2812723Z               "line": 1420
2026-06-20T03:13:21.2812793Z             },
2026-06-20T03:13:21.2812879Z             {
2026-06-20T03:13:21.2812990Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-20T03:13:21.2813080Z               "line": 504
2026-06-20T03:13:21.2813160Z             },
2026-06-20T03:13:21.2813243Z             {
2026-06-20T03:13:21.2813362Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-20T03:13:21.2813442Z               "line": 514
2026-06-20T03:13:21.2813523Z             },
2026-06-20T03:13:21.2813605Z             {
2026-06-20T03:13:21.2813729Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-20T03:13:21.2813809Z               "line": 531
2026-06-20T03:13:21.2813896Z             },
2026-06-20T03:13:21.2813986Z             {
2026-06-20T03:13:21.2814090Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-20T03:13:21.2814187Z               "line": 543
2026-06-20T03:13:21.2814263Z             },
2026-06-20T03:13:21.2814348Z             {
2026-06-20T03:13:21.2814458Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-20T03:13:21.2814549Z               "line": 555
2026-06-20T03:13:21.2814630Z             },
2026-06-20T03:13:21.2814716Z             {
2026-06-20T03:13:21.2814836Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.2814921Z               "line": 1145
2026-06-20T03:13:21.2815001Z             },
2026-06-20T03:13:21.2815086Z             {
2026-06-20T03:13:21.2815196Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T03:13:21.2815281Z               "line": 776
2026-06-20T03:13:21.2815365Z             }
2026-06-20T03:13:21.2815451Z           ]
2026-06-20T03:13:21.2815528Z         }
2026-06-20T03:13:21.2815614Z       }
2026-06-20T03:13:21.2815689Z     },
2026-06-20T03:13:21.2815775Z     {
2026-06-20T03:13:21.2815853Z       "id": "REQ-SHELL-5",
2026-06-20T03:13:21.2817064Z       "title": "Shell ownership is owner-type-agnostic: any non-Shell endpoint type may own/spawn/drive/command/link a shell (Gateway the named first) — control-exclusivity keys on the owner endpoint_id, NEVER on the owner's endpoint type. No ownership path (mint, launch, owner-from-link, cmd, drive, tunnel, sleep/wake, owner-shutdown) inspects the owner's type (CONTEXT:264, ratified 2026-06-11 Gateway grill).",
2026-06-20T03:13:21.2817173Z       "requiredStages": [
2026-06-20T03:13:21.2817254Z         "doc",
2026-06-20T03:13:21.2817335Z         "impl",
2026-06-20T03:13:21.2817417Z         "unit",
2026-06-20T03:13:21.2817502Z         "int"
2026-06-20T03:13:21.2817578Z       ],
2026-06-20T03:13:21.2817664Z       "stages": {
2026-06-20T03:13:21.2817751Z         "doc": {
2026-06-20T03:13:21.2817835Z           "complete": true,
2026-06-20T03:13:21.2817925Z           "evidence": [
2026-06-20T03:13:21.2818006Z             {
2026-06-20T03:13:21.2818101Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.2818275Z               "line": 284
2026-06-20T03:13:21.2818356Z             }
2026-06-20T03:13:21.2818500Z           ]
2026-06-20T03:13:21.2818580Z         },
2026-06-20T03:13:21.2818671Z         "impl": {
2026-06-20T03:13:21.2818767Z           "complete": true,
2026-06-20T03:13:21.2818843Z           "evidence": [
2026-06-20T03:13:21.2818933Z             {
2026-06-20T03:13:21.2819134Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T03:13:21.2819219Z               "line": 260
2026-06-20T03:13:21.2819301Z             }
2026-06-20T03:13:21.2819378Z           ]
2026-06-20T03:13:21.2819463Z         },
2026-06-20T03:13:21.2819534Z         "int": {
2026-06-20T03:13:21.2819625Z           "complete": true,
2026-06-20T03:13:21.2819702Z           "evidence": [
2026-06-20T03:13:21.2819801Z             {
2026-06-20T03:13:21.2819911Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T03:13:21.2819993Z               "line": 827
2026-06-20T03:13:21.2820087Z             },
2026-06-20T03:13:21.2820168Z             {
2026-06-20T03:13:21.2820294Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T03:13:21.2820383Z               "line": 1290
2026-06-20T03:13:21.2820468Z             },
2026-06-20T03:13:21.2820548Z             {
2026-06-20T03:13:21.2820686Z               "path": "crates/spt/tests/gateway_owner_shell_e2e.rs",
2026-06-20T03:13:21.2820771Z               "line": 23
2026-06-20T03:13:21.2820851Z             }
2026-06-20T03:13:21.2820928Z           ]
2026-06-20T03:13:21.2821010Z         },
2026-06-20T03:13:21.2821095Z         "unit": {
2026-06-20T03:13:21.2821190Z           "complete": true,
2026-06-20T03:13:21.2821281Z           "evidence": [
2026-06-20T03:13:21.2821372Z             {
2026-06-20T03:13:21.2821480Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T03:13:21.2821568Z               "line": 803
2026-06-20T03:13:21.2821648Z             }
2026-06-20T03:13:21.2821729Z           ]
2026-06-20T03:13:21.2821819Z         }
2026-06-20T03:13:21.2821897Z       }
2026-06-20T03:13:21.2821986Z     },
2026-06-20T03:13:21.2822067Z     {
2026-06-20T03:13:21.2822168Z       "id": "REQ-START-1",
2026-06-20T03:13:21.2822358Z       "title": "Adapters never resolve SPT_HOME; binary on PATH; api bridging only",
2026-06-20T03:13:21.2822453Z       "requiredStages": [
2026-06-20T03:13:21.2822541Z         "impl",
2026-06-20T03:13:21.2822625Z         "unit"
2026-06-20T03:13:21.2822711Z       ],
2026-06-20T03:13:21.2822793Z       "stages": {
2026-06-20T03:13:21.2822879Z         "doc": {
2026-06-20T03:13:21.2822973Z           "complete": false,
2026-06-20T03:13:21.2823064Z           "evidence": []
2026-06-20T03:13:21.2823146Z         },
2026-06-20T03:13:21.2823236Z         "impl": {
2026-06-20T03:13:21.2823335Z           "complete": true,
2026-06-20T03:13:21.2823415Z           "evidence": [
2026-06-20T03:13:21.2823507Z             {
2026-06-20T03:13:21.2823603Z               "path": "crates/spt-store/src/seed.rs",
2026-06-20T03:13:21.2823692Z               "line": 16
2026-06-20T03:13:21.2823778Z             }
2026-06-20T03:13:21.2823865Z           ]
2026-06-20T03:13:21.2823960Z         },
2026-06-20T03:13:21.2824035Z         "int": {
2026-06-20T03:13:21.2824123Z           "complete": false,
2026-06-20T03:13:21.2824208Z           "evidence": []
2026-06-20T03:13:21.2824284Z         },
2026-06-20T03:13:21.2824364Z         "unit": {
2026-06-20T03:13:21.2824452Z           "complete": true,
2026-06-20T03:13:21.2824547Z           "evidence": [
2026-06-20T03:13:21.2824622Z             {
2026-06-20T03:13:21.2824737Z               "path": "crates/spt-store/src/seed.rs",
2026-06-20T03:13:21.2824809Z               "line": 48
2026-06-20T03:13:21.2824894Z             },
2026-06-20T03:13:21.2824980Z             {
2026-06-20T03:13:21.2825086Z               "path": "crates/spt-store/src/seed.rs",
2026-06-20T03:13:21.2825171Z               "line": 63
2026-06-20T03:13:21.2825256Z             }
2026-06-20T03:13:21.2825333Z           ]
2026-06-20T03:13:21.2825533Z         }
2026-06-20T03:13:21.2825623Z       }
2026-06-20T03:13:21.2825694Z     },
2026-06-20T03:13:21.2825785Z     {
2026-06-20T03:13:21.2825978Z       "id": "REQ-START-2",
2026-06-20T03:13:21.2826136Z       "title": "Harness-hosted startup: api seed then listen",
2026-06-20T03:13:21.2826283Z       "requiredStages": [
2026-06-20T03:13:21.2826374Z         "impl",
2026-06-20T03:13:21.2826460Z         "unit",
2026-06-20T03:13:21.2826541Z         "int"
2026-06-20T03:13:21.2826626Z       ],
2026-06-20T03:13:21.2826718Z       "stages": {
2026-06-20T03:13:21.2826803Z         "doc": {
2026-06-20T03:13:21.2826902Z           "complete": false,
2026-06-20T03:13:21.2826999Z           "evidence": []
2026-06-20T03:13:21.2827085Z         },
2026-06-20T03:13:21.2827170Z         "impl": {
2026-06-20T03:13:21.2827261Z           "complete": true,
2026-06-20T03:13:21.2827347Z           "evidence": [
2026-06-20T03:13:21.2827433Z             {
2026-06-20T03:13:21.2827551Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.2827643Z               "line": 16
2026-06-20T03:13:21.2827728Z             },
2026-06-20T03:13:21.2827824Z             {
2026-06-20T03:13:21.2827929Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.2828010Z               "line": 115
2026-06-20T03:13:21.2828090Z             },
2026-06-20T03:13:21.2828185Z             {
2026-06-20T03:13:21.2828292Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.2828377Z               "line": 300
2026-06-20T03:13:21.2828456Z             }
2026-06-20T03:13:21.2828533Z           ]
2026-06-20T03:13:21.2828618Z         },
2026-06-20T03:13:21.2828703Z         "int": {
2026-06-20T03:13:21.2828797Z           "complete": true,
2026-06-20T03:13:21.2828878Z           "evidence": [
2026-06-20T03:13:21.2829037Z             {
2026-06-20T03:13:21.2829159Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-20T03:13:21.2829241Z               "line": 186
2026-06-20T03:13:21.2829332Z             }
2026-06-20T03:13:21.2829427Z           ]
2026-06-20T03:13:21.2829512Z         },
2026-06-20T03:13:21.2829595Z         "unit": {
2026-06-20T03:13:21.2829700Z           "complete": true,
2026-06-20T03:13:21.2829779Z           "evidence": [
2026-06-20T03:13:21.2829871Z             {
2026-06-20T03:13:21.2829985Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.2830066Z               "line": 590
2026-06-20T03:13:21.2830147Z             },
2026-06-20T03:13:21.2830224Z             {
2026-06-20T03:13:21.2830337Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.2830423Z               "line": 623
2026-06-20T03:13:21.2830510Z             }
2026-06-20T03:13:21.2830596Z           ]
2026-06-20T03:13:21.2830675Z         }
2026-06-20T03:13:21.2830762Z       }
2026-06-20T03:13:21.2830839Z     },
2026-06-20T03:13:21.2830916Z     {
2026-06-20T03:13:21.2831009Z       "id": "REQ-START-3",
2026-06-20T03:13:21.2831180Z       "title": "spt-hosted startup: spawn-session then api bind (no file)",
2026-06-20T03:13:21.2831284Z       "requiredStages": [
2026-06-20T03:13:21.2831364Z         "impl",
2026-06-20T03:13:21.2831455Z         "unit",
2026-06-20T03:13:21.2831527Z         "int"
2026-06-20T03:13:21.2831608Z       ],
2026-06-20T03:13:21.2831688Z       "stages": {
2026-06-20T03:13:21.2831779Z         "doc": {
2026-06-20T03:13:21.2831865Z           "complete": false,
2026-06-20T03:13:21.2831951Z           "evidence": []
2026-06-20T03:13:21.2832036Z         },
2026-06-20T03:13:21.2832118Z         "impl": {
2026-06-20T03:13:21.2832208Z           "complete": true,
2026-06-20T03:13:21.2832289Z           "evidence": [
2026-06-20T03:13:21.2832375Z             {
2026-06-20T03:13:21.2832505Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-20T03:13:21.2832590Z               "line": 23
2026-06-20T03:13:21.2832671Z             },
2026-06-20T03:13:21.2832752Z             {
2026-06-20T03:13:21.2832880Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-20T03:13:21.2832971Z               "line": 205
2026-06-20T03:13:21.2833162Z             },
2026-06-20T03:13:21.2833248Z             {
2026-06-20T03:13:21.2833449Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-20T03:13:21.2833538Z               "line": 221
2026-06-20T03:13:21.2833615Z             },
2026-06-20T03:13:21.2833707Z             {
2026-06-20T03:13:21.2833820Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.2833905Z               "line": 17
2026-06-20T03:13:21.2833985Z             },
2026-06-20T03:13:21.2834058Z             {
2026-06-20T03:13:21.2834172Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.2834253Z               "line": 35
2026-06-20T03:13:21.2834339Z             },
2026-06-20T03:13:21.2834420Z             {
2026-06-20T03:13:21.2834524Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.2834614Z               "line": 116
2026-06-20T03:13:21.2834693Z             }
2026-06-20T03:13:21.2834778Z           ]
2026-06-20T03:13:21.2834863Z         },
2026-06-20T03:13:21.2834944Z         "int": {
2026-06-20T03:13:21.2835041Z           "complete": true,
2026-06-20T03:13:21.2835125Z           "evidence": [
2026-06-20T03:13:21.2835211Z             {
2026-06-20T03:13:21.2835317Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-20T03:13:21.2835407Z               "line": 488
2026-06-20T03:13:21.2835488Z             }
2026-06-20T03:13:21.2835573Z           ]
2026-06-20T03:13:21.2835661Z         },
2026-06-20T03:13:21.2835745Z         "unit": {
2026-06-20T03:13:21.2835840Z           "complete": true,
2026-06-20T03:13:21.2835927Z           "evidence": [
2026-06-20T03:13:21.2836013Z             {
2026-06-20T03:13:21.2836131Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-20T03:13:21.2836225Z               "line": 381
2026-06-20T03:13:21.2836312Z             },
2026-06-20T03:13:21.2836396Z             {
2026-06-20T03:13:21.2836518Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-20T03:13:21.2836605Z               "line": 402
2026-06-20T03:13:21.2836682Z             },
2026-06-20T03:13:21.2836762Z             {
2026-06-20T03:13:21.2836886Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-20T03:13:21.2836978Z               "line": 412
2026-06-20T03:13:21.2837063Z             },
2026-06-20T03:13:21.2837148Z             {
2026-06-20T03:13:21.2837259Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.2837349Z               "line": 591
2026-06-20T03:13:21.2837430Z             },
2026-06-20T03:13:21.2837516Z             {
2026-06-20T03:13:21.2841099Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.2841217Z               "line": 624
2026-06-20T03:13:21.2841308Z             },
2026-06-20T03:13:21.2841376Z             {
2026-06-20T03:13:21.2841499Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.2841583Z               "line": 657
2026-06-20T03:13:21.2841669Z             }
2026-06-20T03:13:21.2841750Z           ]
2026-06-20T03:13:21.2841835Z         }
2026-06-20T03:13:21.2841915Z       }
2026-06-20T03:13:21.2841995Z     },
2026-06-20T03:13:21.2842082Z     {
2026-06-20T03:13:21.2842164Z       "id": "REQ-START-4",
2026-06-20T03:13:21.2842320Z       "title": "Adapter-injected env aliases (SPT/OWL/LIVE)",
2026-06-20T03:13:21.2842417Z       "requiredStages": [
2026-06-20T03:13:21.2842498Z         "impl",
2026-06-20T03:13:21.2842572Z         "unit"
2026-06-20T03:13:21.2842654Z       ],
2026-06-20T03:13:21.2842740Z       "stages": {
2026-06-20T03:13:21.2842821Z         "doc": {
2026-06-20T03:13:21.2842916Z           "complete": false,
2026-06-20T03:13:21.2843007Z           "evidence": []
2026-06-20T03:13:21.2843084Z         },
2026-06-20T03:13:21.2843170Z         "impl": {
2026-06-20T03:13:21.2843255Z           "complete": true,
2026-06-20T03:13:21.2843342Z           "evidence": [
2026-06-20T03:13:21.2843422Z             {
2026-06-20T03:13:21.2843550Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.2843808Z               "line": 585
2026-06-20T03:13:21.2843889Z             }
2026-06-20T03:13:21.2843971Z           ]
2026-06-20T03:13:21.2844147Z         },
2026-06-20T03:13:21.2844238Z         "int": {
2026-06-20T03:13:21.2844324Z           "complete": false,
2026-06-20T03:13:21.2844409Z           "evidence": []
2026-06-20T03:13:21.2844494Z         },
2026-06-20T03:13:21.2844575Z         "unit": {
2026-06-20T03:13:21.2844661Z           "complete": true,
2026-06-20T03:13:21.2844742Z           "evidence": [
2026-06-20T03:13:21.2844827Z             {
2026-06-20T03:13:21.2844952Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.2845038Z               "line": 1026
2026-06-20T03:13:21.2845122Z             }
2026-06-20T03:13:21.2845204Z           ]
2026-06-20T03:13:21.2845291Z         }
2026-06-20T03:13:21.2845367Z       }
2026-06-20T03:13:21.2845447Z     },
2026-06-20T03:13:21.2845528Z     {
2026-06-20T03:13:21.2845624Z       "id": "REQ-START-5",
2026-06-20T03:13:21.2848496Z       "title": "Adapter-agnostic harness-hosted seed + bind-time adapter/profile resolution (ADR-0021): `api seed` carries only parent_pid + session_id (+ optional cwd), no --adapter — a pure \"a harness session exists at this pid\" record; --adapter becomes an OPTIONAL override across the whole api group (an explicit name[:profile] for adapter dev, never required). Omitted, listen/poll resolve the owning adapter/profile AT BIND as a pure read against the live registry — never a seed-time snapshot that can drift: seed parent_pid → exe basename → host_binaries candidate set (REQ-MANIFEST-8) → active-profile pointer (REQ-INSTALL-12) primary, else greatest-registered_at_ms candidate base profile (name-asc tie) → friendly zero-match error. Covers BOTH LiveAgent (listen) and ReadyAgent (poll) bringup. Restores legacy parity: `$LIVE start <id>` → `$SPT listen <id>` with no mandatory --adapter, one generic SessionStart hook per harness binary. (v0.9.0)",
2026-06-20T03:13:21.2848610Z       "requiredStages": [
2026-06-20T03:13:21.2848705Z         "doc",
2026-06-20T03:13:21.2848797Z         "impl",
2026-06-20T03:13:21.2848877Z         "unit",
2026-06-20T03:13:21.2849059Z         "int"
2026-06-20T03:13:21.2849140Z       ],
2026-06-20T03:13:21.2849225Z       "stages": {
2026-06-20T03:13:21.2849311Z         "doc": {
2026-06-20T03:13:21.2849388Z           "complete": true,
2026-06-20T03:13:21.2849488Z           "evidence": [
2026-06-20T03:13:21.2849568Z             {
2026-06-20T03:13:21.2849672Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.2849758Z               "line": 176
2026-06-20T03:13:21.2849842Z             },
2026-06-20T03:13:21.2849923Z             {
2026-06-20T03:13:21.2850061Z               "path": "docs-site/src/harness-contract/api.md",
2026-06-20T03:13:21.2850157Z               "line": 28
2026-06-20T03:13:21.2850232Z             }
2026-06-20T03:13:21.2850323Z           ]
2026-06-20T03:13:21.2850400Z         },
2026-06-20T03:13:21.2850481Z         "impl": {
2026-06-20T03:13:21.2850576Z           "complete": true,
2026-06-20T03:13:21.2850687Z           "evidence": [
2026-06-20T03:13:21.2850772Z             {
2026-06-20T03:13:21.2850895Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-20T03:13:21.2850986Z               "line": 26
2026-06-20T03:13:21.2851072Z             },
2026-06-20T03:13:21.2851153Z             {
2026-06-20T03:13:21.2851272Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-20T03:13:21.2851363Z               "line": 212
2026-06-20T03:13:21.2851449Z             },
2026-06-20T03:13:21.2851530Z             {
2026-06-20T03:13:21.2851650Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-20T03:13:21.2851730Z               "line": 221
2026-06-20T03:13:21.2851810Z             },
2026-06-20T03:13:21.2851892Z             {
2026-06-20T03:13:21.2851998Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T03:13:21.2852087Z               "line": 485
2026-06-20T03:13:21.2852162Z             },
2026-06-20T03:13:21.2852248Z             {
2026-06-20T03:13:21.2852489Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.2852570Z               "line": 36
2026-06-20T03:13:21.2852743Z             },
2026-06-20T03:13:21.2852823Z             {
2026-06-20T03:13:21.2852943Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.2853024Z               "line": 118
2026-06-20T03:13:21.2853109Z             },
2026-06-20T03:13:21.2853190Z             {
2026-06-20T03:13:21.2853300Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T03:13:21.2853391Z               "line": 329
2026-06-20T03:13:21.2853466Z             }
2026-06-20T03:13:21.2853554Z           ]
2026-06-20T03:13:21.2853629Z         },
2026-06-20T03:13:21.2853715Z         "int": {
2026-06-20T03:13:21.2853805Z           "complete": true,
2026-06-20T03:13:21.2853888Z           "evidence": [
2026-06-20T03:13:21.2853968Z             {
2026-06-20T03:13:21.2854092Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-20T03:13:21.2854193Z               "line": 17
2026-06-20T03:13:21.2854273Z             }
2026-06-20T03:13:21.2854349Z           ]
2026-06-20T03:13:21.2854425Z         },
2026-06-20T03:13:21.2854517Z         "unit": {
2026-06-20T03:13:21.2854598Z           "complete": true,
2026-06-20T03:13:21.2854678Z           "evidence": [
2026-06-20T03:13:21.2854764Z             {
2026-06-20T03:13:21.2854875Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-20T03:13:21.2854964Z               "line": 358
2026-06-20T03:13:21.2855044Z             },
2026-06-20T03:13:21.2855130Z             {
2026-06-20T03:13:21.2855240Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-20T03:13:21.2855326Z               "line": 371
2026-06-20T03:13:21.2855406Z             },
2026-06-20T03:13:21.2855488Z             {
2026-06-20T03:13:21.2855598Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T03:13:21.2855683Z               "line": 597
2026-06-20T03:13:21.2855764Z             }
2026-06-20T03:13:21.2855846Z           ]
2026-06-20T03:13:21.2855937Z         }
2026-06-20T03:13:21.2856016Z       }
2026-06-20T03:13:21.2856088Z     },
2026-06-20T03:13:21.2856175Z     {
2026-06-20T03:13:21.2856270Z       "id": "REQ-STORE-1",
2026-06-20T03:13:21.2857185Z       "title": "spt-store::BranchStore (git branch as versioned KV; commit=checkpoint/tip=resume, atomic multi-key, merge-native sync) is the substrate for coarse/durable/audited state (context, registry snapshot+distribution, daemon checkpoint); hot paths (B5 fsync journal) + indexed queries (SQLite spool) excluded (ADR-0011)",
2026-06-20T03:13:21.2857289Z       "requiredStages": [
2026-06-20T03:13:21.2857370Z         "impl",
2026-06-20T03:13:21.2857456Z         "unit"
2026-06-20T03:13:21.2857536Z       ],
2026-06-20T03:13:21.2857625Z       "stages": {
2026-06-20T03:13:21.2857702Z         "doc": {
2026-06-20T03:13:21.2857788Z           "complete": false,
2026-06-20T03:13:21.2857878Z           "evidence": []
2026-06-20T03:13:21.2857964Z         },
2026-06-20T03:13:21.2858045Z         "impl": {
2026-06-20T03:13:21.2858145Z           "complete": true,
2026-06-20T03:13:21.2858230Z           "evidence": [
2026-06-20T03:13:21.2858321Z             {
2026-06-20T03:13:21.2858446Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T03:13:21.2858531Z               "line": 23
2026-06-20T03:13:21.2858612Z             },
2026-06-20T03:13:21.2858694Z             {
2026-06-20T03:13:21.2858818Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T03:13:21.2858907Z               "line": 46
2026-06-20T03:13:21.2859057Z             },
2026-06-20T03:13:21.2859137Z             {
2026-06-20T03:13:21.2859256Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T03:13:21.2859353Z               "line": 97
2026-06-20T03:13:21.2859437Z             },
2026-06-20T03:13:21.2859513Z             {
2026-06-20T03:13:21.2859625Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T03:13:21.2859710Z               "line": 125
2026-06-20T03:13:21.2859977Z             },
2026-06-20T03:13:21.2860058Z             {
2026-06-20T03:13:21.2860180Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T03:13:21.2860370Z               "line": 207
2026-06-20T03:13:21.2860454Z             },
2026-06-20T03:13:21.2860535Z             {
2026-06-20T03:13:21.2860660Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T03:13:21.2860741Z               "line": 231
2026-06-20T03:13:21.2860821Z             },
2026-06-20T03:13:21.2860908Z             {
2026-06-20T03:13:21.2861017Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T03:13:21.2861112Z               "line": 467
2026-06-20T03:13:21.2861183Z             },
2026-06-20T03:13:21.2861261Z             {
2026-06-20T03:13:21.2861389Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T03:13:21.2861474Z               "line": 25
2026-06-20T03:13:21.2861556Z             },
2026-06-20T03:13:21.2861642Z             {
2026-06-20T03:13:21.2861775Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T03:13:21.2861857Z               "line": 120
2026-06-20T03:13:21.2861947Z             },
2026-06-20T03:13:21.2862027Z             {
2026-06-20T03:13:21.2862133Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T03:13:21.2862220Z               "line": 148
2026-06-20T03:13:21.2862295Z             },
2026-06-20T03:13:21.2862381Z             {
2026-06-20T03:13:21.2862496Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T03:13:21.2862573Z               "line": 165
2026-06-20T03:13:21.2862652Z             },
2026-06-20T03:13:21.2862728Z             {
2026-06-20T03:13:21.2862852Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T03:13:21.2862936Z               "line": 180
2026-06-20T03:13:21.2863021Z             },
2026-06-20T03:13:21.2863106Z             {
2026-06-20T03:13:21.2863227Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T03:13:21.2863317Z               "line": 198
2026-06-20T03:13:21.2863402Z             },
2026-06-20T03:13:21.2863484Z             {
2026-06-20T03:13:21.2863603Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T03:13:21.2863693Z               "line": 207
2026-06-20T03:13:21.2863770Z             },
2026-06-20T03:13:21.2863851Z             {
2026-06-20T03:13:21.2863965Z               "path": "crates/spt-store/src/project.rs",
2026-06-20T03:13:21.2864050Z               "line": 16
2026-06-20T03:13:21.2864133Z             },
2026-06-20T03:13:21.2864213Z             {
2026-06-20T03:13:21.2864332Z               "path": "crates/spt-store/src/project.rs",
2026-06-20T03:13:21.2864414Z               "line": 63
2026-06-20T03:13:21.2864500Z             }
2026-06-20T03:13:21.2864576Z           ]
2026-06-20T03:13:21.2864661Z         },
2026-06-20T03:13:21.2864748Z         "int": {
2026-06-20T03:13:21.2864833Z           "complete": false,
2026-06-20T03:13:21.2864919Z           "evidence": []
2026-06-20T03:13:21.2865000Z         },
2026-06-20T03:13:21.2865087Z         "unit": {
2026-06-20T03:13:21.2865176Z           "complete": true,
2026-06-20T03:13:21.2865272Z           "evidence": [
2026-06-20T03:13:21.2865359Z             {
2026-06-20T03:13:21.2865482Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T03:13:21.2865567Z               "line": 584
2026-06-20T03:13:21.2865642Z             },
2026-06-20T03:13:21.2865729Z             {
2026-06-20T03:13:21.2865839Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T03:13:21.2865924Z               "line": 594
2026-06-20T03:13:21.2866010Z             },
2026-06-20T03:13:21.2866082Z             {
2026-06-20T03:13:21.2866201Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T03:13:21.2866290Z               "line": 616
2026-06-20T03:13:21.2866378Z             },
2026-06-20T03:13:21.2866459Z             {
2026-06-20T03:13:21.2866582Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T03:13:21.2866759Z               "line": 632
2026-06-20T03:13:21.2866840Z             },
2026-06-20T03:13:21.2866925Z             {
2026-06-20T03:13:21.2867131Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T03:13:21.2867216Z               "line": 690
2026-06-20T03:13:21.2867303Z             },
2026-06-20T03:13:21.2867379Z             {
2026-06-20T03:13:21.2867492Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T03:13:21.2867584Z               "line": 472
2026-06-20T03:13:21.2867666Z             },
2026-06-20T03:13:21.2867737Z             {
2026-06-20T03:13:21.2867864Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T03:13:21.2867940Z               "line": 507
2026-06-20T03:13:21.2868026Z             },
2026-06-20T03:13:21.2868110Z             {
2026-06-20T03:13:21.2868214Z               "path": "crates/spt-store/src/project.rs",
2026-06-20T03:13:21.2868300Z               "line": 120
2026-06-20T03:13:21.2868372Z             },
2026-06-20T03:13:21.2868462Z             {
2026-06-20T03:13:21.2868586Z               "path": "crates/spt-store/src/project.rs",
2026-06-20T03:13:21.2868673Z               "line": 128
2026-06-20T03:13:21.2868753Z             }
2026-06-20T03:13:21.2868829Z           ]
2026-06-20T03:13:21.2868916Z         }
2026-06-20T03:13:21.2869073Z       }
2026-06-20T03:13:21.2869153Z     },
2026-06-20T03:13:21.2869236Z     {
2026-06-20T03:13:21.2869326Z       "id": "REQ-SUBNET-1",
2026-06-20T03:13:21.2869650Z       "title": "spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted",
2026-06-20T03:13:21.2869745Z       "requiredStages": [
2026-06-20T03:13:21.2869831Z         "impl",
2026-06-20T03:13:21.2869913Z         "unit"
2026-06-20T03:13:21.2869993Z       ],
2026-06-20T03:13:21.2870079Z       "stages": {
2026-06-20T03:13:21.2870151Z         "doc": {
2026-06-20T03:13:21.2870237Z           "complete": false,
2026-06-20T03:13:21.2870326Z           "evidence": []
2026-06-20T03:13:21.2870417Z         },
2026-06-20T03:13:21.2870504Z         "impl": {
2026-06-20T03:13:21.2870599Z           "complete": true,
2026-06-20T03:13:21.2870697Z           "evidence": [
2026-06-20T03:13:21.2870778Z             {
2026-06-20T03:13:21.2870907Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.2870991Z               "line": 281
2026-06-20T03:13:21.2871076Z             },
2026-06-20T03:13:21.2871158Z             {
2026-06-20T03:13:21.2871287Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.2871372Z               "line": 651
2026-06-20T03:13:21.2871448Z             },
2026-06-20T03:13:21.2871531Z             {
2026-06-20T03:13:21.2871640Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2871729Z               "line": 3399
2026-06-20T03:13:21.2871812Z             },
2026-06-20T03:13:21.2871888Z             {
2026-06-20T03:13:21.2871987Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2872064Z               "line": 3709
2026-06-20T03:13:21.2872155Z             },
2026-06-20T03:13:21.2872235Z             {
2026-06-20T03:13:21.2872345Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2872427Z               "line": 3728
2026-06-20T03:13:21.2872513Z             },
2026-06-20T03:13:21.2872602Z             {
2026-06-20T03:13:21.2872698Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2872775Z               "line": 3792
2026-06-20T03:13:21.2872851Z             },
2026-06-20T03:13:21.2872926Z             {
2026-06-20T03:13:21.2873027Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2873114Z               "line": 3834
2026-06-20T03:13:21.2873194Z             },
2026-06-20T03:13:21.2873274Z             {
2026-06-20T03:13:21.2873379Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2873465Z               "line": 4023
2026-06-20T03:13:21.2873544Z             },
2026-06-20T03:13:21.2873634Z             {
2026-06-20T03:13:21.2873734Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2873939Z               "line": 4093
2026-06-20T03:13:21.2874015Z             },
2026-06-20T03:13:21.2874187Z             {
2026-06-20T03:13:21.2874277Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2874364Z               "line": 4317
2026-06-20T03:13:21.2874449Z             },
2026-06-20T03:13:21.2874525Z             {
2026-06-20T03:13:21.2874630Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2874712Z               "line": 4961
2026-06-20T03:13:21.2874797Z             },
2026-06-20T03:13:21.2874878Z             {
2026-06-20T03:13:21.2874984Z               "path": "crates/spt/src/wansend.rs",
2026-06-20T03:13:21.2875070Z               "line": 418
2026-06-20T03:13:21.2875151Z             }
2026-06-20T03:13:21.2875231Z           ]
2026-06-20T03:13:21.2875313Z         },
2026-06-20T03:13:21.2875399Z         "int": {
2026-06-20T03:13:21.2875479Z           "complete": false,
2026-06-20T03:13:21.2875575Z           "evidence": []
2026-06-20T03:13:21.2875671Z         },
2026-06-20T03:13:21.2875755Z         "unit": {
2026-06-20T03:13:21.2875856Z           "complete": true,
2026-06-20T03:13:21.2875947Z           "evidence": [
2026-06-20T03:13:21.2876038Z             {
2026-06-20T03:13:21.2876160Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.2876256Z               "line": 1584
2026-06-20T03:13:21.2876347Z             },
2026-06-20T03:13:21.2876432Z             {
2026-06-20T03:13:21.2876541Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2876628Z               "line": 9964
2026-06-20T03:13:21.2876714Z             },
2026-06-20T03:13:21.2876794Z             {
2026-06-20T03:13:21.2876895Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2876981Z               "line": 10134
2026-06-20T03:13:21.2877062Z             },
2026-06-20T03:13:21.2877142Z             {
2026-06-20T03:13:21.2877243Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2877333Z               "line": 10141
2026-06-20T03:13:21.2877414Z             },
2026-06-20T03:13:21.2877495Z             {
2026-06-20T03:13:21.2877606Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2877686Z               "line": 10194
2026-06-20T03:13:21.2877767Z             },
2026-06-20T03:13:21.2877849Z             {
2026-06-20T03:13:21.2877953Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2878038Z               "line": 10211
2026-06-20T03:13:21.2878115Z             },
2026-06-20T03:13:21.2878207Z             {
2026-06-20T03:13:21.2878310Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2878391Z               "line": 10241
2026-06-20T03:13:21.2878476Z             },
2026-06-20T03:13:21.2878558Z             {
2026-06-20T03:13:21.2878665Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2878759Z               "line": 10357
2026-06-20T03:13:21.2878841Z             },
2026-06-20T03:13:21.2878914Z             {
2026-06-20T03:13:21.2879103Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2879190Z               "line": 10508
2026-06-20T03:13:21.2879690Z             }
2026-06-20T03:13:21.2879834Z           ]
2026-06-20T03:13:21.2879933Z         }
2026-06-20T03:13:21.2880037Z       }
2026-06-20T03:13:21.2880130Z     },
2026-06-20T03:13:21.2880224Z     {
2026-06-20T03:13:21.2880339Z       "id": "REQ-SUBNET-2",
2026-06-20T03:13:21.2880653Z       "title": "Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder",
2026-06-20T03:13:21.2880769Z       "requiredStages": [
2026-06-20T03:13:21.2880868Z         "impl",
2026-06-20T03:13:21.2880963Z         "unit",
2026-06-20T03:13:21.2881050Z         "int"
2026-06-20T03:13:21.2881145Z       ],
2026-06-20T03:13:21.2881239Z       "stages": {
2026-06-20T03:13:21.2881329Z         "doc": {
2026-06-20T03:13:21.2881443Z           "complete": true,
2026-06-20T03:13:21.2881551Z           "evidence": [
2026-06-20T03:13:21.2881655Z             {
2026-06-20T03:13:21.2882110Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-20T03:13:21.2882214Z               "line": 60
2026-06-20T03:13:21.2882420Z             }
2026-06-20T03:13:21.2882515Z           ]
2026-06-20T03:13:21.2882609Z         },
2026-06-20T03:13:21.2882715Z         "impl": {
2026-06-20T03:13:21.2882824Z           "complete": true,
2026-06-20T03:13:21.2882919Z           "evidence": [
2026-06-20T03:13:21.2883020Z             {
2026-06-20T03:13:21.2883152Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T03:13:21.2883268Z               "line": 838
2026-06-20T03:13:21.2883354Z             },
2026-06-20T03:13:21.2883453Z             {
2026-06-20T03:13:21.2883602Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.2883707Z               "line": 1899
2026-06-20T03:13:21.2883801Z             },
2026-06-20T03:13:21.2883896Z             {
2026-06-20T03:13:21.2884043Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T03:13:21.2884156Z               "line": 633
2026-06-20T03:13:21.2884266Z             },
2026-06-20T03:13:21.2884352Z             {
2026-06-20T03:13:21.2884489Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T03:13:21.2884595Z               "line": 817
2026-06-20T03:13:21.2884686Z             },
2026-06-20T03:13:21.2884776Z             {
2026-06-20T03:13:21.2884915Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T03:13:21.2885010Z               "line": 26
2026-06-20T03:13:21.2885114Z             },
2026-06-20T03:13:21.2885195Z             {
2026-06-20T03:13:21.2885334Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T03:13:21.2885429Z               "line": 60
2026-06-20T03:13:21.2885529Z             },
2026-06-20T03:13:21.2885630Z             {
2026-06-20T03:13:21.2885767Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T03:13:21.2885874Z               "line": 168
2026-06-20T03:13:21.2885968Z             },
2026-06-20T03:13:21.2886073Z             {
2026-06-20T03:13:21.2886212Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T03:13:21.2886325Z               "line": 295
2026-06-20T03:13:21.2886430Z             },
2026-06-20T03:13:21.2886508Z             {
2026-06-20T03:13:21.2886654Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T03:13:21.2886758Z               "line": 417
2026-06-20T03:13:21.2886844Z             },
2026-06-20T03:13:21.2886936Z             {
2026-06-20T03:13:21.2887106Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-20T03:13:21.2887212Z               "line": 252
2026-06-20T03:13:21.2887307Z             },
2026-06-20T03:13:21.2887407Z             {
2026-06-20T03:13:21.2887532Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2887641Z               "line": 3755
2026-06-20T03:13:21.2887736Z             },
2026-06-20T03:13:21.2887837Z             {
2026-06-20T03:13:21.2887956Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2888065Z               "line": 4256
2026-06-20T03:13:21.2888157Z             },
2026-06-20T03:13:21.2888251Z             {
2026-06-20T03:13:21.2888380Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2888481Z               "line": 4892
2026-06-20T03:13:21.2888584Z             }
2026-06-20T03:13:21.2888685Z           ]
2026-06-20T03:13:21.2888782Z         },
2026-06-20T03:13:21.2888885Z         "int": {
2026-06-20T03:13:21.2889099Z           "complete": true,
2026-06-20T03:13:21.2889202Z           "evidence": [
2026-06-20T03:13:21.2889297Z             {
2026-06-20T03:13:21.2889474Z               "path": "crates/spt-daemon/tests/pairjoin.rs",
2026-06-20T03:13:21.2889578Z               "line": 22
2026-06-20T03:13:21.2889668Z             },
2026-06-20T03:13:21.2889769Z             {
2026-06-20T03:13:21.2889911Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T03:13:21.2890022Z               "line": 645
2026-06-20T03:13:21.2890117Z             },
2026-06-20T03:13:21.2890221Z             {
2026-06-20T03:13:21.2890503Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T03:13:21.2890737Z               "line": 887
2026-06-20T03:13:21.2890828Z             }
2026-06-20T03:13:21.2890913Z           ]
2026-06-20T03:13:21.2891014Z         },
2026-06-20T03:13:21.2891103Z         "unit": {
2026-06-20T03:13:21.2891213Z           "complete": true,
2026-06-20T03:13:21.2891315Z           "evidence": [
2026-06-20T03:13:21.2891400Z             {
2026-06-20T03:13:21.2891519Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T03:13:21.2891601Z               "line": 586
2026-06-20T03:13:21.2891687Z             },
2026-06-20T03:13:21.2891766Z             {
2026-06-20T03:13:21.2891874Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2891966Z               "line": 10004
2026-06-20T03:13:21.2892041Z             },
2026-06-20T03:13:21.2892126Z             {
2026-06-20T03:13:21.2892225Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2892317Z               "line": 10715
2026-06-20T03:13:21.2892389Z             }
2026-06-20T03:13:21.2892469Z           ]
2026-06-20T03:13:21.2892559Z         }
2026-06-20T03:13:21.2892646Z       }
2026-06-20T03:13:21.2892732Z     },
2026-06-20T03:13:21.2892812Z     {
2026-06-20T03:13:21.2892908Z       "id": "REQ-SUBNET-3",
2026-06-20T03:13:21.2893174Z       "title": "Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)",
2026-06-20T03:13:21.2893276Z       "requiredStages": [
2026-06-20T03:13:21.2893361Z         "impl",
2026-06-20T03:13:21.2893446Z         "unit"
2026-06-20T03:13:21.2893533Z       ],
2026-06-20T03:13:21.2893604Z       "stages": {
2026-06-20T03:13:21.2893685Z         "doc": {
2026-06-20T03:13:21.2893780Z           "complete": false,
2026-06-20T03:13:21.2893867Z           "evidence": []
2026-06-20T03:13:21.2893957Z         },
2026-06-20T03:13:21.2894042Z         "impl": {
2026-06-20T03:13:21.2894138Z           "complete": true,
2026-06-20T03:13:21.2894230Z           "evidence": [
2026-06-20T03:13:21.2894319Z             {
2026-06-20T03:13:21.2894451Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.2894547Z               "line": 152
2026-06-20T03:13:21.2894636Z             },
2026-06-20T03:13:21.2894711Z             {
2026-06-20T03:13:21.2894835Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.2894917Z               "line": 299
2026-06-20T03:13:21.2895002Z             },
2026-06-20T03:13:21.2895083Z             {
2026-06-20T03:13:21.2895198Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.2895284Z               "line": 443
2026-06-20T03:13:21.2895365Z             },
2026-06-20T03:13:21.2895441Z             {
2026-06-20T03:13:21.2895561Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.2895642Z               "line": 532
2026-06-20T03:13:21.2895722Z             },
2026-06-20T03:13:21.2895795Z             {
2026-06-20T03:13:21.2895923Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.2896003Z               "line": 125
2026-06-20T03:13:21.2896094Z             },
2026-06-20T03:13:21.2896176Z             {
2026-06-20T03:13:21.2896300Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.2896390Z               "line": 253
2026-06-20T03:13:21.2896472Z             },
2026-06-20T03:13:21.2896557Z             {
2026-06-20T03:13:21.2896671Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.2896763Z               "line": 264
2026-06-20T03:13:21.2896843Z             },
2026-06-20T03:13:21.2896928Z             {
2026-06-20T03:13:21.2897044Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.2897125Z               "line": 285
2026-06-20T03:13:21.2897210Z             },
2026-06-20T03:13:21.2897290Z             {
2026-06-20T03:13:21.2897405Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.2897491Z               "line": 621
2026-06-20T03:13:21.2897652Z             },
2026-06-20T03:13:21.2897738Z             {
2026-06-20T03:13:21.2897919Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.2898000Z               "line": 680
2026-06-20T03:13:21.2898082Z             },
2026-06-20T03:13:21.2898168Z             {
2026-06-20T03:13:21.2898286Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-20T03:13:21.2898368Z               "line": 61
2026-06-20T03:13:21.2898454Z             },
2026-06-20T03:13:21.2898535Z             {
2026-06-20T03:13:21.2898649Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-20T03:13:21.2898722Z               "line": 90
2026-06-20T03:13:21.2898811Z             },
2026-06-20T03:13:21.2898892Z             {
2026-06-20T03:13:21.2899079Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-20T03:13:21.2899173Z               "line": 125
2026-06-20T03:13:21.2899255Z             },
2026-06-20T03:13:21.2899342Z             {
2026-06-20T03:13:21.2899464Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-20T03:13:21.2899545Z               "line": 9
2026-06-20T03:13:21.2899630Z             },
2026-06-20T03:13:21.2899702Z             {
2026-06-20T03:13:21.2899809Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2899890Z               "line": 4093
2026-06-20T03:13:21.2899976Z             },
2026-06-20T03:13:21.2900058Z             {
2026-06-20T03:13:21.2900166Z               "path": "crates/spt/src/wansend.rs",
2026-06-20T03:13:21.2900248Z               "line": 445
2026-06-20T03:13:21.2900320Z             }
2026-06-20T03:13:21.2900396Z           ]
2026-06-20T03:13:21.2900476Z         },
2026-06-20T03:13:21.2900562Z         "int": {
2026-06-20T03:13:21.2900649Z           "complete": false,
2026-06-20T03:13:21.2900735Z           "evidence": []
2026-06-20T03:13:21.2900819Z         },
2026-06-20T03:13:21.2900897Z         "unit": {
2026-06-20T03:13:21.2900992Z           "complete": true,
2026-06-20T03:13:21.2901073Z           "evidence": [
2026-06-20T03:13:21.2901158Z             {
2026-06-20T03:13:21.2901283Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.2901383Z               "line": 1356
2026-06-20T03:13:21.2901473Z             },
2026-06-20T03:13:21.2901555Z             {
2026-06-20T03:13:21.2901683Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.2901764Z               "line": 1713
2026-06-20T03:13:21.2901851Z             },
2026-06-20T03:13:21.2901932Z             {
2026-06-20T03:13:21.2902050Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-20T03:13:21.2902136Z               "line": 892
2026-06-20T03:13:21.2902209Z             },
2026-06-20T03:13:21.2902294Z             {
2026-06-20T03:13:21.2902402Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.2902488Z               "line": 991
2026-06-20T03:13:21.2902574Z             },
2026-06-20T03:13:21.2902653Z             {
2026-06-20T03:13:21.2902780Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.2902862Z               "line": 1041
2026-06-20T03:13:21.2902949Z             },
2026-06-20T03:13:21.2903029Z             {
2026-06-20T03:13:21.2903134Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.2903220Z               "line": 1100
2026-06-20T03:13:21.2903301Z             },
2026-06-20T03:13:21.2903386Z             {
2026-06-20T03:13:21.2903502Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-20T03:13:21.2903587Z               "line": 234
2026-06-20T03:13:21.2903663Z             },
2026-06-20T03:13:21.2903739Z             {
2026-06-20T03:13:21.2903850Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-20T03:13:21.2903940Z               "line": 49
2026-06-20T03:13:21.2904026Z             },
2026-06-20T03:13:21.2904103Z             {
2026-06-20T03:13:21.2904198Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2904393Z               "line": 10357
2026-06-20T03:13:21.2904470Z             },
2026-06-20T03:13:21.2904550Z             {
2026-06-20T03:13:21.2904747Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2904832Z               "line": 10463
2026-06-20T03:13:21.2904902Z             },
2026-06-20T03:13:21.2904987Z             {
2026-06-20T03:13:21.2905078Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2905163Z               "line": 10681
2026-06-20T03:13:21.2905248Z             }
2026-06-20T03:13:21.2905328Z           ]
2026-06-20T03:13:21.2905410Z         }
2026-06-20T03:13:21.2905492Z       }
2026-06-20T03:13:21.2905572Z     },
2026-06-20T03:13:21.2905652Z     {
2026-06-20T03:13:21.2905745Z       "id": "REQ-SUBNET-4",
2026-06-20T03:13:21.2906025Z       "title": "Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)",
2026-06-20T03:13:21.2906121Z       "requiredStages": [
2026-06-20T03:13:21.2906206Z         "impl",
2026-06-20T03:13:21.2906282Z         "unit"
2026-06-20T03:13:21.2906365Z       ],
2026-06-20T03:13:21.2906440Z       "stages": {
2026-06-20T03:13:21.2906526Z         "doc": {
2026-06-20T03:13:21.2906616Z           "complete": true,
2026-06-20T03:13:21.2906708Z           "evidence": [
2026-06-20T03:13:21.2906793Z             {
2026-06-20T03:13:21.2906945Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-20T03:13:21.2907042Z               "line": 60
2026-06-20T03:13:21.2907122Z             }
2026-06-20T03:13:21.2907207Z           ]
2026-06-20T03:13:21.2907294Z         },
2026-06-20T03:13:21.2907380Z         "impl": {
2026-06-20T03:13:21.2907469Z           "complete": true,
2026-06-20T03:13:21.2907551Z           "evidence": [
2026-06-20T03:13:21.2907628Z             {
2026-06-20T03:13:21.2907728Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2907822Z               "line": 3399
2026-06-20T03:13:21.2907907Z             },
2026-06-20T03:13:21.2907989Z             {
2026-06-20T03:13:21.2908094Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2908179Z               "line": 4859
2026-06-20T03:13:21.2908270Z             },
2026-06-20T03:13:21.2908352Z             {
2026-06-20T03:13:21.2908460Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2912019Z               "line": 4892
2026-06-20T03:13:21.2912121Z             }
2026-06-20T03:13:21.2912206Z           ]
2026-06-20T03:13:21.2912276Z         },
2026-06-20T03:13:21.2912352Z         "int": {
2026-06-20T03:13:21.2912440Z           "complete": false,
2026-06-20T03:13:21.2912535Z           "evidence": []
2026-06-20T03:13:21.2912615Z         },
2026-06-20T03:13:21.2912687Z         "unit": {
2026-06-20T03:13:21.2912774Z           "complete": true,
2026-06-20T03:13:21.2912854Z           "evidence": [
2026-06-20T03:13:21.2912934Z             {
2026-06-20T03:13:21.2913043Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2913129Z               "line": 10120
2026-06-20T03:13:21.2913232Z             },
2026-06-20T03:13:21.2913298Z             {
2026-06-20T03:13:21.2913404Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2913494Z               "line": 10194
2026-06-20T03:13:21.2913575Z             }
2026-06-20T03:13:21.2913646Z           ]
2026-06-20T03:13:21.2913733Z         }
2026-06-20T03:13:21.2913814Z       }
2026-06-20T03:13:21.2913895Z     },
2026-06-20T03:13:21.2913970Z     {
2026-06-20T03:13:21.2914053Z       "id": "REQ-SUBNET-5",
2026-06-20T03:13:21.2915234Z       "title": "Per-subnet serve-state: spt subnet detach <NAME> [--save] / attach <NAME> [--save] — daemon keeps running, stops/starts advertising + connecting for that subnet (peer pump + responder selective); --save persists the startup default in daemon config; the all-attached banner gains per-subnet states (M8 decision 6, --save renamed from --auto per decision 25 session)",
2026-06-20T03:13:21.2915336Z       "requiredStages": [
2026-06-20T03:13:21.2915407Z         "impl",
2026-06-20T03:13:21.2915482Z         "unit",
2026-06-20T03:13:21.2915701Z         "int"
2026-06-20T03:13:21.2915789Z       ],
2026-06-20T03:13:21.2915965Z       "stages": {
2026-06-20T03:13:21.2916052Z         "doc": {
2026-06-20T03:13:21.2916132Z           "complete": false,
2026-06-20T03:13:21.2916222Z           "evidence": []
2026-06-20T03:13:21.2916305Z         },
2026-06-20T03:13:21.2916385Z         "impl": {
2026-06-20T03:13:21.2916480Z           "complete": true,
2026-06-20T03:13:21.2916566Z           "evidence": [
2026-06-20T03:13:21.2916648Z             {
2026-06-20T03:13:21.2916771Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T03:13:21.2916861Z               "line": 128
2026-06-20T03:13:21.2916944Z             },
2026-06-20T03:13:21.2917024Z             {
2026-06-20T03:13:21.2917148Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-20T03:13:21.2917234Z               "line": 413
2026-06-20T03:13:21.2917315Z             },
2026-06-20T03:13:21.2917401Z             {
2026-06-20T03:13:21.2917515Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T03:13:21.2917607Z               "line": 74
2026-06-20T03:13:21.2917696Z             },
2026-06-20T03:13:21.2917777Z             {
2026-06-20T03:13:21.2917893Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T03:13:21.2917978Z               "line": 332
2026-06-20T03:13:21.2918059Z             },
2026-06-20T03:13:21.2918140Z             {
2026-06-20T03:13:21.2918246Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T03:13:21.2918330Z               "line": 621
2026-06-20T03:13:21.2918415Z             },
2026-06-20T03:13:21.2918492Z             {
2026-06-20T03:13:21.2918617Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-20T03:13:21.2918697Z               "line": 31
2026-06-20T03:13:21.2918767Z             },
2026-06-20T03:13:21.2918854Z             {
2026-06-20T03:13:21.2919044Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-20T03:13:21.2919136Z               "line": 50
2026-06-20T03:13:21.2919217Z             },
2026-06-20T03:13:21.2919298Z             {
2026-06-20T03:13:21.2919426Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-20T03:13:21.2919499Z               "line": 69
2026-06-20T03:13:21.2919584Z             },
2026-06-20T03:13:21.2919660Z             {
2026-06-20T03:13:21.2919780Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-20T03:13:21.2919861Z               "line": 113
2026-06-20T03:13:21.2919946Z             },
2026-06-20T03:13:21.2920027Z             {
2026-06-20T03:13:21.2920143Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-20T03:13:21.2920227Z               "line": 25
2026-06-20T03:13:21.2920313Z             },
2026-06-20T03:13:21.2920394Z             {
2026-06-20T03:13:21.2920509Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-20T03:13:21.2920599Z               "line": 34
2026-06-20T03:13:21.2920679Z             },
2026-06-20T03:13:21.2920760Z             {
2026-06-20T03:13:21.2920887Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-20T03:13:21.2920977Z               "line": 17
2026-06-20T03:13:21.2921058Z             },
2026-06-20T03:13:21.2921130Z             {
2026-06-20T03:13:21.2921235Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2921320Z               "line": 4817
2026-06-20T03:13:21.2921397Z             },
2026-06-20T03:13:21.2921479Z             {
2026-06-20T03:13:21.2921583Z               "path": "crates/spt/src/wansend.rs",
2026-06-20T03:13:21.2921668Z               "line": 419
2026-06-20T03:13:21.2921750Z             }
2026-06-20T03:13:21.2921827Z           ]
2026-06-20T03:13:21.2921912Z         },
2026-06-20T03:13:21.2921988Z         "int": {
2026-06-20T03:13:21.2922079Z           "complete": true,
2026-06-20T03:13:21.2922160Z           "evidence": [
2026-06-20T03:13:21.2922241Z             {
2026-06-20T03:13:21.2922356Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-20T03:13:21.2922575Z               "line": 821
2026-06-20T03:13:21.2922656Z             }
2026-06-20T03:13:21.2922728Z           ]
2026-06-20T03:13:21.2922918Z         },
2026-06-20T03:13:21.2922991Z         "unit": {
2026-06-20T03:13:21.2923076Z           "complete": true,
2026-06-20T03:13:21.2923161Z           "evidence": [
2026-06-20T03:13:21.2923242Z             {
2026-06-20T03:13:21.2923358Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-20T03:13:21.2923447Z               "line": 341
2026-06-20T03:13:21.2923527Z             },
2026-06-20T03:13:21.2923603Z             {
2026-06-20T03:13:21.2923722Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T03:13:21.2923807Z               "line": 1115
2026-06-20T03:13:21.2923882Z             },
2026-06-20T03:13:21.2923964Z             {
2026-06-20T03:13:21.2924069Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-20T03:13:21.2924154Z               "line": 151
2026-06-20T03:13:21.2924231Z             },
2026-06-20T03:13:21.2924317Z             {
2026-06-20T03:13:21.2924441Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-20T03:13:21.2924516Z               "line": 61
2026-06-20T03:13:21.2924599Z             },
2026-06-20T03:13:21.2924675Z             {
2026-06-20T03:13:21.2924793Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-20T03:13:21.2924875Z               "line": 111
2026-06-20T03:13:21.2924956Z             },
2026-06-20T03:13:21.2925037Z             {
2026-06-20T03:13:21.2925141Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-20T03:13:21.2925223Z               "line": 138
2026-06-20T03:13:21.2925299Z             },
2026-06-20T03:13:21.2925375Z             {
2026-06-20T03:13:21.2925489Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-20T03:13:21.2925572Z               "line": 148
2026-06-20T03:13:21.2925657Z             },
2026-06-20T03:13:21.2925727Z             {
2026-06-20T03:13:21.2925829Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2925915Z               "line": 10021
2026-06-20T03:13:21.2925995Z             }
2026-06-20T03:13:21.2926070Z           ]
2026-06-20T03:13:21.2926151Z         }
2026-06-20T03:13:21.2926232Z       }
2026-06-20T03:13:21.2926303Z     },
2026-06-20T03:13:21.2926387Z     {
2026-06-20T03:13:21.2926482Z       "id": "REQ-SUBNET-6",
2026-06-20T03:13:21.2927156Z       "title": "Trust lifecycle verbs, elevation-gated: spt subnet leave <NAME> (membership exit) and spt subnet prune <node> (removes a dead identity's trust + registry rows, killing its dead dials; trust mutation = security surface, REQ-PAIR-6 gate machinery) (M8 decisions 6-7)",
2026-06-20T03:13:21.2927251Z       "requiredStages": [
2026-06-20T03:13:21.2927332Z         "impl",
2026-06-20T03:13:21.2927417Z         "unit"
2026-06-20T03:13:21.2927489Z       ],
2026-06-20T03:13:21.2927580Z       "stages": {
2026-06-20T03:13:21.2927661Z         "doc": {
2026-06-20T03:13:21.2927742Z           "complete": false,
2026-06-20T03:13:21.2927828Z           "evidence": []
2026-06-20T03:13:21.2927913Z         },
2026-06-20T03:13:21.2928004Z         "impl": {
2026-06-20T03:13:21.2928090Z           "complete": true,
2026-06-20T03:13:21.2928172Z           "evidence": [
2026-06-20T03:13:21.2928251Z             {
2026-06-20T03:13:21.2928371Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.2928448Z               "line": 254
2026-06-20T03:13:21.2928529Z             },
2026-06-20T03:13:21.2928614Z             {
2026-06-20T03:13:21.2928710Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2928801Z               "line": 4475
2026-06-20T03:13:21.2928881Z             },
2026-06-20T03:13:21.2929023Z             {
2026-06-20T03:13:21.2929119Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2929201Z               "line": 4492
2026-06-20T03:13:21.2929295Z             },
2026-06-20T03:13:21.2929376Z             {
2026-06-20T03:13:21.2929472Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2929671Z               "line": 4545
2026-06-20T03:13:21.2929749Z             },
2026-06-20T03:13:21.2929834Z             {
2026-06-20T03:13:21.2930020Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2930111Z               "line": 4568
2026-06-20T03:13:21.2930187Z             }
2026-06-20T03:13:21.2930267Z           ]
2026-06-20T03:13:21.2930340Z         },
2026-06-20T03:13:21.2930421Z         "int": {
2026-06-20T03:13:21.2930506Z           "complete": false,
2026-06-20T03:13:21.2930592Z           "evidence": []
2026-06-20T03:13:21.2930669Z         },
2026-06-20T03:13:21.2930746Z         "unit": {
2026-06-20T03:13:21.2930825Z           "complete": true,
2026-06-20T03:13:21.2930911Z           "evidence": [
2026-06-20T03:13:21.2930993Z             {
2026-06-20T03:13:21.2931098Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2931178Z               "line": 10035
2026-06-20T03:13:21.2931258Z             },
2026-06-20T03:13:21.2931340Z             {
2026-06-20T03:13:21.2931443Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2931519Z               "line": 10068
2026-06-20T03:13:21.2931599Z             },
2026-06-20T03:13:21.2931681Z             {
2026-06-20T03:13:21.2931772Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2931862Z               "line": 10077
2026-06-20T03:13:21.2931933Z             }
2026-06-20T03:13:21.2932015Z           ]
2026-06-20T03:13:21.2932096Z         }
2026-06-20T03:13:21.2932181Z       }
2026-06-20T03:13:21.2932258Z     },
2026-06-20T03:13:21.2932339Z     {
2026-06-20T03:13:21.2932425Z       "id": "REQ-SUBNET-7",
2026-06-20T03:13:21.2934026Z       "title": "Per-machine re-pair trust overwrite: registry rows carry a hashed stable machine identifier (OS machine id /etc/machine-id|MachineGuid, domain-separated SHA-256 before gossip, spt-minted persisted UUID fallback; additive serde-default field — old rows parse clean); a COMPLETED pairing ceremony presenting the same node label AND machine id as an existing trusted row evicts the superseded identity's trust + registry rows on the seed-holder and replicates the eviction; a gossiped claim alone never evicts trust (M8 decisions 13, 22)",
2026-06-20T03:13:21.2934139Z       "requiredStages": [
2026-06-20T03:13:21.2934216Z         "impl",
2026-06-20T03:13:21.2934296Z         "unit"
2026-06-20T03:13:21.2934381Z       ],
2026-06-20T03:13:21.2934466Z       "stages": {
2026-06-20T03:13:21.2934548Z         "doc": {
2026-06-20T03:13:21.2934630Z           "complete": false,
2026-06-20T03:13:21.2934710Z           "evidence": []
2026-06-20T03:13:21.2934791Z         },
2026-06-20T03:13:21.2934868Z         "impl": {
2026-06-20T03:13:21.2934954Z           "complete": true,
2026-06-20T03:13:21.2935034Z           "evidence": [
2026-06-20T03:13:21.2935105Z             {
2026-06-20T03:13:21.2935225Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-20T03:13:21.2935302Z               "line": 17
2026-06-20T03:13:21.2935377Z             },
2026-06-20T03:13:21.2935454Z             {
2026-06-20T03:13:21.2935582Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T03:13:21.2935673Z               "line": 103
2026-06-20T03:13:21.2935759Z             },
2026-06-20T03:13:21.2935841Z             {
2026-06-20T03:13:21.2935949Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T03:13:21.2936035Z               "line": 312
2026-06-20T03:13:21.2936113Z             },
2026-06-20T03:13:21.2936198Z             {
2026-06-20T03:13:21.2936322Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-20T03:13:21.2936413Z               "line": 131
2026-06-20T03:13:21.2936499Z             },
2026-06-20T03:13:21.2936579Z             {
2026-06-20T03:13:21.2936706Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.2936793Z               "line": 160
2026-06-20T03:13:21.2936868Z             },
2026-06-20T03:13:21.2936943Z             {
2026-06-20T03:13:21.2937057Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.2937229Z               "line": 447
2026-06-20T03:13:21.2937309Z             },
2026-06-20T03:13:21.2937468Z             {
2026-06-20T03:13:21.2937591Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.2937672Z               "line": 670
2026-06-20T03:13:21.2937754Z             },
2026-06-20T03:13:21.2937830Z             {
2026-06-20T03:13:21.2937953Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.2938036Z               "line": 710
2026-06-20T03:13:21.2938116Z             },
2026-06-20T03:13:21.2938197Z             {
2026-06-20T03:13:21.2938316Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.2938398Z               "line": 766
2026-06-20T03:13:21.2938478Z             },
2026-06-20T03:13:21.2938559Z             {
2026-06-20T03:13:21.2938680Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T03:13:21.2938765Z               "line": 136
2026-06-20T03:13:21.2938845Z             },
2026-06-20T03:13:21.2938931Z             {
2026-06-20T03:13:21.2939141Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.2939231Z               "line": 139
2026-06-20T03:13:21.2939314Z             }
2026-06-20T03:13:21.2939390Z           ]
2026-06-20T03:13:21.2939474Z         },
2026-06-20T03:13:21.2939550Z         "int": {
2026-06-20T03:13:21.2939636Z           "complete": false,
2026-06-20T03:13:21.2939718Z           "evidence": []
2026-06-20T03:13:21.2939803Z         },
2026-06-20T03:13:21.2939883Z         "unit": {
2026-06-20T03:13:21.2939970Z           "complete": true,
2026-06-20T03:13:21.2940047Z           "evidence": [
2026-06-20T03:13:21.2940127Z             {
2026-06-20T03:13:21.2940246Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-20T03:13:21.2940328Z               "line": 136
2026-06-20T03:13:21.2940409Z             },
2026-06-20T03:13:21.2940494Z             {
2026-06-20T03:13:21.2940600Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-20T03:13:21.2940695Z               "line": 156
2026-06-20T03:13:21.2940771Z             },
2026-06-20T03:13:21.2940856Z             {
2026-06-20T03:13:21.2940972Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.2941056Z               "line": 987
2026-06-20T03:13:21.2941142Z             },
2026-06-20T03:13:21.2941210Z             {
2026-06-20T03:13:21.2941334Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T03:13:21.2941409Z               "line": 1009
2026-06-20T03:13:21.2941486Z             },
2026-06-20T03:13:21.2941568Z             {
2026-06-20T03:13:21.2941677Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T03:13:21.2941757Z               "line": 1419
2026-06-20T03:13:21.2941837Z             },
2026-06-20T03:13:21.2941919Z             {
2026-06-20T03:13:21.2942022Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T03:13:21.2942103Z               "line": 1036
2026-06-20T03:13:21.2942189Z             }
2026-06-20T03:13:21.2942265Z           ]
2026-06-20T03:13:21.2942341Z         }
2026-06-20T03:13:21.2942426Z       }
2026-06-20T03:13:21.2942508Z     },
2026-06-20T03:13:21.2942580Z     {
2026-06-20T03:13:21.2942666Z       "id": "REQ-SUBNET-8",
2026-06-20T03:13:21.2943762Z       "title": "Status render honesty: zero-subnet text is daemon-aware ('No subnets registered — this node is standalone.' + daemon-running-dependent blurb, never implying messaging works while the daemon is down); hint footer prints on bare spt subnet only (status drops it); a stalled pump is surfaced in subnet status, never rendered implied-healthy (M8 decisions 11-12, 23)",
2026-06-20T03:13:21.2943849Z       "requiredStages": [
2026-06-20T03:13:21.2943928Z         "impl",
2026-06-20T03:13:21.2943995Z         "unit"
2026-06-20T03:13:21.2944077Z       ],
2026-06-20T03:13:21.2944159Z       "stages": {
2026-06-20T03:13:21.2944239Z         "doc": {
2026-06-20T03:13:21.2944329Z           "complete": false,
2026-06-20T03:13:21.2944516Z           "evidence": []
2026-06-20T03:13:21.2944596Z         },
2026-06-20T03:13:21.2944672Z         "impl": {
2026-06-20T03:13:21.2944848Z           "complete": true,
2026-06-20T03:13:21.2944936Z           "evidence": [
2026-06-20T03:13:21.2945017Z             {
2026-06-20T03:13:21.2945123Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2945204Z               "line": 3835
2026-06-20T03:13:21.2945284Z             },
2026-06-20T03:13:21.2945360Z             {
2026-06-20T03:13:21.2945461Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2945538Z               "line": 3864
2026-06-20T03:13:21.2945603Z             },
2026-06-20T03:13:21.2945690Z             {
2026-06-20T03:13:21.2945795Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2945885Z               "line": 3881
2026-06-20T03:13:21.2945971Z             },
2026-06-20T03:13:21.2946053Z             {
2026-06-20T03:13:21.2946157Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2946247Z               "line": 3904
2026-06-20T03:13:21.2946334Z             },
2026-06-20T03:13:21.2946416Z             {
2026-06-20T03:13:21.2946519Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2946601Z               "line": 4318
2026-06-20T03:13:21.2946683Z             }
2026-06-20T03:13:21.2946768Z           ]
2026-06-20T03:13:21.2946843Z         },
2026-06-20T03:13:21.2946930Z         "int": {
2026-06-20T03:13:21.2947012Z           "complete": false,
2026-06-20T03:13:21.2947097Z           "evidence": []
2026-06-20T03:13:21.2947181Z         },
2026-06-20T03:13:21.2947262Z         "unit": {
2026-06-20T03:13:21.2947353Z           "complete": true,
2026-06-20T03:13:21.2947432Z           "evidence": [
2026-06-20T03:13:21.2947518Z             {
2026-06-20T03:13:21.2947608Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2947685Z               "line": 10225
2026-06-20T03:13:21.2947761Z             },
2026-06-20T03:13:21.2947846Z             {
2026-06-20T03:13:21.2947961Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2948043Z               "line": 10241
2026-06-20T03:13:21.2948123Z             }
2026-06-20T03:13:21.2948194Z           ]
2026-06-20T03:13:21.2948276Z         }
2026-06-20T03:13:21.2948352Z       }
2026-06-20T03:13:21.2948438Z     },
2026-06-20T03:13:21.2948518Z     {
2026-06-20T03:13:21.2948606Z       "id": "REQ-TERM-1",
2026-06-20T03:13:21.2948776Z       "title": "Process-supervisor terminal wrapper hosting broker PTYs",
2026-06-20T03:13:21.2948867Z       "requiredStages": [
2026-06-20T03:13:21.2949024Z         "impl",
2026-06-20T03:13:21.2949096Z         "unit"
2026-06-20T03:13:21.2949181Z       ],
2026-06-20T03:13:21.2949283Z       "stages": {
2026-06-20T03:13:21.2949363Z         "doc": {
2026-06-20T03:13:21.2949477Z           "complete": false,
2026-06-20T03:13:21.2949564Z           "evidence": []
2026-06-20T03:13:21.2949649Z         },
2026-06-20T03:13:21.2949720Z         "impl": {
2026-06-20T03:13:21.2949806Z           "complete": true,
2026-06-20T03:13:21.2949898Z           "evidence": [
2026-06-20T03:13:21.2949983Z             {
2026-06-20T03:13:21.2950091Z               "path": "crates/spt-term/src/pty.rs",
2026-06-20T03:13:21.2950177Z               "line": 59
2026-06-20T03:13:21.2950259Z             },
2026-06-20T03:13:21.2950335Z             {
2026-06-20T03:13:21.2950443Z               "path": "crates/spt-term/src/pty.rs",
2026-06-20T03:13:21.2950526Z               "line": 234
2026-06-20T03:13:21.2950602Z             },
2026-06-20T03:13:21.2950683Z             {
2026-06-20T03:13:21.2950787Z               "path": "crates/spt-term/src/surface.rs",
2026-06-20T03:13:21.2950874Z               "line": 100
2026-06-20T03:13:21.2950959Z             }
2026-06-20T03:13:21.2951040Z           ]
2026-06-20T03:13:21.2951126Z         },
2026-06-20T03:13:21.2951203Z         "int": {
2026-06-20T03:13:21.2951288Z           "complete": false,
2026-06-20T03:13:21.2951374Z           "evidence": []
2026-06-20T03:13:21.2951460Z         },
2026-06-20T03:13:21.2951660Z         "unit": {
2026-06-20T03:13:21.2951751Z           "complete": true,
2026-06-20T03:13:21.2951932Z           "evidence": [
2026-06-20T03:13:21.2952008Z             {
2026-06-20T03:13:21.2952129Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-20T03:13:21.2952209Z               "line": 24
2026-06-20T03:13:21.2952298Z             },
2026-06-20T03:13:21.2952374Z             {
2026-06-20T03:13:21.2952493Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-20T03:13:21.2952578Z               "line": 56
2026-06-20T03:13:21.2952663Z             }
2026-06-20T03:13:21.2952744Z           ]
2026-06-20T03:13:21.2952826Z         }
2026-06-20T03:13:21.2952906Z       }
2026-06-20T03:13:21.2952991Z     },
2026-06-20T03:13:21.2953068Z     {
2026-06-20T03:13:21.2953160Z       "id": "REQ-TERM-2",
2026-06-20T03:13:21.2953330Z       "title": "session-surface abstraction; send-keys + send-line injection",
2026-06-20T03:13:21.2953422Z       "requiredStages": [
2026-06-20T03:13:21.2953507Z         "impl",
2026-06-20T03:13:21.2953597Z         "unit"
2026-06-20T03:13:21.2953669Z       ],
2026-06-20T03:13:21.2953765Z       "stages": {
2026-06-20T03:13:21.2953845Z         "doc": {
2026-06-20T03:13:21.2953926Z           "complete": false,
2026-06-20T03:13:21.2954022Z           "evidence": []
2026-06-20T03:13:21.2954094Z         },
2026-06-20T03:13:21.2954184Z         "impl": {
2026-06-20T03:13:21.2954269Z           "complete": true,
2026-06-20T03:13:21.2954362Z           "evidence": [
2026-06-20T03:13:21.2954447Z             {
2026-06-20T03:13:21.2954547Z               "path": "crates/spt-term/src/surface.rs",
2026-06-20T03:13:21.2954642Z               "line": 117
2026-06-20T03:13:21.2954714Z             },
2026-06-20T03:13:21.2954808Z             {
2026-06-20T03:13:21.2954918Z               "path": "crates/spt-term/src/surface.rs",
2026-06-20T03:13:21.2955005Z               "line": 127
2026-06-20T03:13:21.2955081Z             }
2026-06-20T03:13:21.2955165Z           ]
2026-06-20T03:13:21.2955246Z         },
2026-06-20T03:13:21.2955323Z         "int": {
2026-06-20T03:13:21.2955412Z           "complete": false,
2026-06-20T03:13:21.2955501Z           "evidence": []
2026-06-20T03:13:21.2955582Z         },
2026-06-20T03:13:21.2955673Z         "unit": {
2026-06-20T03:13:21.2955760Z           "complete": true,
2026-06-20T03:13:21.2955835Z           "evidence": [
2026-06-20T03:13:21.2955916Z             {
2026-06-20T03:13:21.2956036Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-20T03:13:21.2956117Z               "line": 46
2026-06-20T03:13:21.2956197Z             },
2026-06-20T03:13:21.2956284Z             {
2026-06-20T03:13:21.2956398Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-20T03:13:21.2956507Z               "line": 77
2026-06-20T03:13:21.2956589Z             }
2026-06-20T03:13:21.2956675Z           ]
2026-06-20T03:13:21.2956756Z         }
2026-06-20T03:13:21.2956836Z       }
2026-06-20T03:13:21.2956923Z     },
2026-06-20T03:13:21.2957000Z     {
2026-06-20T03:13:21.2957099Z       "id": "REQ-TERM-3",
2026-06-20T03:13:21.2957233Z       "title": "Byte-stream remote terminal streaming for v1",
2026-06-20T03:13:21.2957338Z       "requiredStages": [
2026-06-20T03:13:21.2957413Z         "impl",
2026-06-20T03:13:21.2957500Z         "unit"
2026-06-20T03:13:21.2957582Z       ],
2026-06-20T03:13:21.2957667Z       "stages": {
2026-06-20T03:13:21.2957756Z         "doc": {
2026-06-20T03:13:21.2957836Z           "complete": false,
2026-06-20T03:13:21.2957932Z           "evidence": []
2026-06-20T03:13:21.2958002Z         },
2026-06-20T03:13:21.2958092Z         "impl": {
2026-06-20T03:13:21.2958183Z           "complete": true,
2026-06-20T03:13:21.2958264Z           "evidence": [
2026-06-20T03:13:21.2958345Z             {
2026-06-20T03:13:21.2958454Z               "path": "crates/spt-term/src/stream.rs",
2026-06-20T03:13:21.2958541Z               "line": 71
2026-06-20T03:13:21.2958621Z             }
2026-06-20T03:13:21.2958706Z           ]
2026-06-20T03:13:21.2958875Z         },
2026-06-20T03:13:21.2959021Z         "int": {
2026-06-20T03:13:21.2959112Z           "complete": false,
2026-06-20T03:13:21.2959289Z           "evidence": []
2026-06-20T03:13:21.2959374Z         },
2026-06-20T03:13:21.2959451Z         "unit": {
2026-06-20T03:13:21.2959533Z           "complete": true,
2026-06-20T03:13:21.2959613Z           "evidence": [
2026-06-20T03:13:21.2959699Z             {
2026-06-20T03:13:21.2959814Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-20T03:13:21.2959899Z               "line": 37
2026-06-20T03:13:21.2959976Z             },
2026-06-20T03:13:21.2960057Z             {
2026-06-20T03:13:21.2960172Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-20T03:13:21.2960266Z               "line": 67
2026-06-20T03:13:21.2960343Z             }
2026-06-20T03:13:21.2960425Z           ]
2026-06-20T03:13:21.2960497Z         }
2026-06-20T03:13:21.2960575Z       }
2026-06-20T03:13:21.2960656Z     },
2026-06-20T03:13:21.2960742Z     {
2026-06-20T03:13:21.2960853Z       "id": "REQ-TERM-4",
2026-06-20T03:13:21.2961309Z       "title": "Live activity buffer (session digest): projection of normalized session logs, snapshot-pull (spt endpoint digest) + structured-delta-stream contract + api digest-entry push",
2026-06-20T03:13:21.2961416Z       "requiredStages": [
2026-06-20T03:13:21.2961491Z         "impl",
2026-06-20T03:13:21.2961567Z         "unit",
2026-06-20T03:13:21.2961648Z         "int"
2026-06-20T03:13:21.2961730Z       ],
2026-06-20T03:13:21.2961825Z       "stages": {
2026-06-20T03:13:21.2961896Z         "doc": {
2026-06-20T03:13:21.2961981Z           "complete": false,
2026-06-20T03:13:21.2962069Z           "evidence": []
2026-06-20T03:13:21.2962149Z         },
2026-06-20T03:13:21.2962234Z         "impl": {
2026-06-20T03:13:21.2962326Z           "complete": true,
2026-06-20T03:13:21.2962412Z           "evidence": [
2026-06-20T03:13:21.2962492Z             {
2026-06-20T03:13:21.2962602Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-20T03:13:21.2962689Z               "line": 37
2026-06-20T03:13:21.2962764Z             },
2026-06-20T03:13:21.2962849Z             {
2026-06-20T03:13:21.2962972Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-20T03:13:21.2963091Z               "line": 25
2026-06-20T03:13:21.2963171Z             },
2026-06-20T03:13:21.2963246Z             {
2026-06-20T03:13:21.2963357Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-20T03:13:21.2963453Z               "line": 114
2026-06-20T03:13:21.2963533Z             },
2026-06-20T03:13:21.2963619Z             {
2026-06-20T03:13:21.2963734Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-20T03:13:21.2963819Z               "line": 267
2026-06-20T03:13:21.2963904Z             },
2026-06-20T03:13:21.2963982Z             {
2026-06-20T03:13:21.2964096Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-20T03:13:21.2964177Z               "line": 289
2026-06-20T03:13:21.2964248Z             },
2026-06-20T03:13:21.2964335Z             {
2026-06-20T03:13:21.2964448Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-20T03:13:21.2964568Z               "line": 307
2026-06-20T03:13:21.2964659Z             },
2026-06-20T03:13:21.2964749Z             {
2026-06-20T03:13:21.2964873Z               "path": "crates/spt-store/src/history.rs",
2026-06-20T03:13:21.2964955Z               "line": 33
2026-06-20T03:13:21.2965040Z             },
2026-06-20T03:13:21.2965116Z             {
2026-06-20T03:13:21.2965232Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T03:13:21.2965317Z               "line": 52
2026-06-20T03:13:21.2965402Z             },
2026-06-20T03:13:21.2965488Z             {
2026-06-20T03:13:21.2965594Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T03:13:21.2965683Z               "line": 180
2026-06-20T03:13:21.2965763Z             },
2026-06-20T03:13:21.2965849Z             {
2026-06-20T03:13:21.2965954Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T03:13:21.2966161Z               "line": 190
2026-06-20T03:13:21.2966243Z             },
2026-06-20T03:13:21.2966395Z             {
2026-06-20T03:13:21.2966515Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T03:13:21.2966601Z               "line": 250
2026-06-20T03:13:21.2966686Z             },
2026-06-20T03:13:21.2966762Z             {
2026-06-20T03:13:21.2966887Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.2966978Z               "line": 284
2026-06-20T03:13:21.2967053Z             },
2026-06-20T03:13:21.2967134Z             {
2026-06-20T03:13:21.2967249Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.2967330Z               "line": 295
2026-06-20T03:13:21.2967411Z             },
2026-06-20T03:13:21.2967493Z             {
2026-06-20T03:13:21.2967602Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2967683Z               "line": 1193
2026-06-20T03:13:21.2967764Z             }
2026-06-20T03:13:21.2967846Z           ]
2026-06-20T03:13:21.2967935Z         },
2026-06-20T03:13:21.2968003Z         "int": {
2026-06-20T03:13:21.2968109Z           "complete": true,
2026-06-20T03:13:21.2968199Z           "evidence": [
2026-06-20T03:13:21.2968278Z             {
2026-06-20T03:13:21.2968396Z               "path": "crates/spt-daemon/tests/digest.rs",
2026-06-20T03:13:21.2968483Z               "line": 18
2026-06-20T03:13:21.2968567Z             }
2026-06-20T03:13:21.2968638Z           ]
2026-06-20T03:13:21.2968718Z         },
2026-06-20T03:13:21.2968805Z         "unit": {
2026-06-20T03:13:21.2968882Z           "complete": true,
2026-06-20T03:13:21.2969033Z           "evidence": [
2026-06-20T03:13:21.2969106Z             {
2026-06-20T03:13:21.2969225Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-20T03:13:21.2969300Z               "line": 364
2026-06-20T03:13:21.2969387Z             },
2026-06-20T03:13:21.2969468Z             {
2026-06-20T03:13:21.2969578Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-20T03:13:21.2969677Z               "line": 416
2026-06-20T03:13:21.2969759Z             },
2026-06-20T03:13:21.2969844Z             {
2026-06-20T03:13:21.2969944Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-20T03:13:21.2970036Z               "line": 426
2026-06-20T03:13:21.2970121Z             },
2026-06-20T03:13:21.2970198Z             {
2026-06-20T03:13:21.2970316Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-20T03:13:21.2970408Z               "line": 436
2026-06-20T03:13:21.2970492Z             },
2026-06-20T03:13:21.2970569Z             {
2026-06-20T03:13:21.2970685Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-20T03:13:21.2970779Z               "line": 456
2026-06-20T03:13:21.2970860Z             },
2026-06-20T03:13:21.2970942Z             {
2026-06-20T03:13:21.2971042Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-20T03:13:21.2971132Z               "line": 478
2026-06-20T03:13:21.2971226Z             },
2026-06-20T03:13:21.2971302Z             {
2026-06-20T03:13:21.2971413Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-20T03:13:21.2971507Z               "line": 491
2026-06-20T03:13:21.2971583Z             },
2026-06-20T03:13:21.2971665Z             {
2026-06-20T03:13:21.2971780Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-20T03:13:21.2971860Z               "line": 502
2026-06-20T03:13:21.2971947Z             },
2026-06-20T03:13:21.2972032Z             {
2026-06-20T03:13:21.2972137Z               "path": "crates/spt-store/src/history.rs",
2026-06-20T03:13:21.2972218Z               "line": 108
2026-06-20T03:13:21.2972300Z             },
2026-06-20T03:13:21.2972385Z             {
2026-06-20T03:13:21.2972494Z               "path": "crates/spt-term/src/digest.rs",
2026-06-20T03:13:21.2972576Z               "line": 119
2026-06-20T03:13:21.2972662Z             },
2026-06-20T03:13:21.2972742Z             {
2026-06-20T03:13:21.2972847Z               "path": "crates/spt-term/src/digest.rs",
2026-06-20T03:13:21.2973028Z               "line": 127
2026-06-20T03:13:21.2973195Z             },
2026-06-20T03:13:21.2973283Z             {
2026-06-20T03:13:21.2973400Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T03:13:21.2973480Z               "line": 474
2026-06-20T03:13:21.2973561Z             },
2026-06-20T03:13:21.2973647Z             {
2026-06-20T03:13:21.2973760Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T03:13:21.2973840Z               "line": 501
2026-06-20T03:13:21.2973927Z             },
2026-06-20T03:13:21.2973999Z             {
2026-06-20T03:13:21.2974117Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T03:13:21.2974203Z               "line": 520
2026-06-20T03:13:21.2974285Z             },
2026-06-20T03:13:21.2974355Z             {
2026-06-20T03:13:21.2974474Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T03:13:21.2974562Z               "line": 535
2026-06-20T03:13:21.2974637Z             },
2026-06-20T03:13:21.2974717Z             {
2026-06-20T03:13:21.2974828Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T03:13:21.2974914Z               "line": 561
2026-06-20T03:13:21.2974999Z             },
2026-06-20T03:13:21.2975080Z             {
2026-06-20T03:13:21.2975196Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T03:13:21.2975280Z               "line": 581
2026-06-20T03:13:21.2975352Z             },
2026-06-20T03:13:21.2975433Z             {
2026-06-20T03:13:21.2975557Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T03:13:21.2975652Z               "line": 591
2026-06-20T03:13:21.2975724Z             },
2026-06-20T03:13:21.2975811Z             {
2026-06-20T03:13:21.2978712Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T03:13:21.2978834Z               "line": 683
2026-06-20T03:13:21.2978914Z             },
2026-06-20T03:13:21.2979081Z             {
2026-06-20T03:13:21.2979221Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.2979317Z               "line": 885
2026-06-20T03:13:21.2979423Z             },
2026-06-20T03:13:21.2979504Z             {
2026-06-20T03:13:21.2979613Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2979695Z               "line": 9792
2026-06-20T03:13:21.2979781Z             }
2026-06-20T03:13:21.2979860Z           ]
2026-06-20T03:13:21.2979932Z         }
2026-06-20T03:13:21.2980005Z       }
2026-06-20T03:13:21.2980085Z     },
2026-06-20T03:13:21.2980161Z     {
2026-06-20T03:13:21.2980243Z       "id": "REQ-TERM-5",
2026-06-20T03:13:21.2981743Z       "title": "Adapter-declared digest extractor seam: a `[digest]` manifest section declaring an imperative extractor (native harness log -> the {role,text,tool,ts} contract; defaults to the [history] source files with an own-source escape hatch), `api digest-entry` push fallback, register-time validation of the section, adapter-declared presentation defaults (window depth, arg-truncation, sprint-collapse) that any consumer may override, and a `spt adapter digest-proof` author tool plus runtime skip-diagnostics (no silent drop). Reverses M9's no-manifest-seam stance; no declarative DSL.",
2026-06-20T03:13:21.2981843Z       "requiredStages": [
2026-06-20T03:13:21.2981925Z         "doc",
2026-06-20T03:13:21.2982002Z         "impl",
2026-06-20T03:13:21.2982081Z         "unit",
2026-06-20T03:13:21.2982172Z         "int"
2026-06-20T03:13:21.2982240Z       ],
2026-06-20T03:13:21.2982311Z       "stages": {
2026-06-20T03:13:21.2982396Z         "doc": {
2026-06-20T03:13:21.2982487Z           "complete": true,
2026-06-20T03:13:21.2982564Z           "evidence": [
2026-06-20T03:13:21.2982635Z             {
2026-06-20T03:13:21.2982744Z               "path": "docs/MANIFEST.md",
2026-06-20T03:13:21.2982826Z               "line": 234
2026-06-20T03:13:21.2982907Z             }
2026-06-20T03:13:21.2982988Z           ]
2026-06-20T03:13:21.2983059Z         },
2026-06-20T03:13:21.2983283Z         "impl": {
2026-06-20T03:13:21.2983369Z           "complete": true,
2026-06-20T03:13:21.2983451Z           "evidence": [
2026-06-20T03:13:21.2983631Z             {
2026-06-20T03:13:21.2983751Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-20T03:13:21.2983838Z               "line": 75
2026-06-20T03:13:21.2983908Z             },
2026-06-20T03:13:21.2983988Z             {
2026-06-20T03:13:21.2984093Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-20T03:13:21.2984179Z               "line": 131
2026-06-20T03:13:21.2984254Z             },
2026-06-20T03:13:21.2984339Z             {
2026-06-20T03:13:21.2984444Z               "path": "crates/spt-live/src/digest.rs",
2026-06-20T03:13:21.2984530Z               "line": 22
2026-06-20T03:13:21.2984615Z             },
2026-06-20T03:13:21.2984687Z             {
2026-06-20T03:13:21.2984792Z               "path": "crates/spt-live/src/digest.rs",
2026-06-20T03:13:21.2984873Z               "line": 87
2026-06-20T03:13:21.2984953Z             },
2026-06-20T03:13:21.2985034Z             {
2026-06-20T03:13:21.2985141Z               "path": "crates/spt-term/src/digest.rs",
2026-06-20T03:13:21.2985236Z               "line": 30
2026-06-20T03:13:21.2985311Z             },
2026-06-20T03:13:21.2985379Z             {
2026-06-20T03:13:21.2985498Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T03:13:21.2985583Z               "line": 103
2026-06-20T03:13:21.2985664Z             },
2026-06-20T03:13:21.2985741Z             {
2026-06-20T03:13:21.2985860Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T03:13:21.2985950Z               "line": 167
2026-06-20T03:13:21.2986033Z             },
2026-06-20T03:13:21.2986114Z             {
2026-06-20T03:13:21.2986222Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T03:13:21.2986313Z               "line": 434
2026-06-20T03:13:21.2986391Z             },
2026-06-20T03:13:21.2986475Z             {
2026-06-20T03:13:21.2986580Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2986672Z               "line": 5650
2026-06-20T03:13:21.2986757Z             },
2026-06-20T03:13:21.2986832Z             {
2026-06-20T03:13:21.2986940Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2987022Z               "line": 5957
2026-06-20T03:13:21.2987102Z             }
2026-06-20T03:13:21.2987192Z           ]
2026-06-20T03:13:21.2987267Z         },
2026-06-20T03:13:21.2987354Z         "int": {
2026-06-20T03:13:21.2987441Z           "complete": true,
2026-06-20T03:13:21.2987520Z           "evidence": [
2026-06-20T03:13:21.2987601Z             {
2026-06-20T03:13:21.2987755Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-20T03:13:21.2987840Z               "line": 17
2026-06-20T03:13:21.2987921Z             }
2026-06-20T03:13:21.2988003Z           ]
2026-06-20T03:13:21.2988079Z         },
2026-06-20T03:13:21.2988164Z         "unit": {
2026-06-20T03:13:21.2988241Z           "complete": true,
2026-06-20T03:13:21.2988342Z           "evidence": [
2026-06-20T03:13:21.2988412Z             {
2026-06-20T03:13:21.2988522Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-20T03:13:21.2988609Z               "line": 375
2026-06-20T03:13:21.2988689Z             },
2026-06-20T03:13:21.2988775Z             {
2026-06-20T03:13:21.2988880Z               "path": "crates/spt-live/src/digest.rs",
2026-06-20T03:13:21.2989027Z               "line": 162
2026-06-20T03:13:21.2989113Z             },
2026-06-20T03:13:21.2989195Z             {
2026-06-20T03:13:21.2989300Z               "path": "crates/spt-live/src/digest.rs",
2026-06-20T03:13:21.2989384Z               "line": 179
2026-06-20T03:13:21.2989493Z             },
2026-06-20T03:13:21.2989570Z             {
2026-06-20T03:13:21.2989669Z               "path": "crates/spt-live/src/digest.rs",
2026-06-20T03:13:21.2989749Z               "line": 201
2026-06-20T03:13:21.2989824Z             },
2026-06-20T03:13:21.2989907Z             {
2026-06-20T03:13:21.2990012Z               "path": "crates/spt-live/src/digest.rs",
2026-06-20T03:13:21.2990197Z               "line": 212
2026-06-20T03:13:21.2990369Z             },
2026-06-20T03:13:21.2990454Z             {
2026-06-20T03:13:21.2990560Z               "path": "crates/spt-live/src/digest.rs",
2026-06-20T03:13:21.2990646Z               "line": 223
2026-06-20T03:13:21.2990716Z             },
2026-06-20T03:13:21.2990783Z             {
2026-06-20T03:13:21.2990908Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.2990989Z               "line": 1525
2026-06-20T03:13:21.2991070Z             },
2026-06-20T03:13:21.2991151Z             {
2026-06-20T03:13:21.2991256Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.2991342Z               "line": 1568
2026-06-20T03:13:21.2991417Z             },
2026-06-20T03:13:21.2991495Z             {
2026-06-20T03:13:21.2991604Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T03:13:21.2991685Z               "line": 606
2026-06-20T03:13:21.2991781Z             },
2026-06-20T03:13:21.2991853Z             {
2026-06-20T03:13:21.2991966Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T03:13:21.2992057Z               "line": 634
2026-06-20T03:13:21.2992130Z             },
2026-06-20T03:13:21.2992214Z             {
2026-06-20T03:13:21.2992318Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T03:13:21.2992399Z               "line": 646
2026-06-20T03:13:21.2992485Z             },
2026-06-20T03:13:21.2992567Z             {
2026-06-20T03:13:21.2992665Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T03:13:21.2992752Z               "line": 669
2026-06-20T03:13:21.2992834Z             },
2026-06-20T03:13:21.2992910Z             {
2026-06-20T03:13:21.2993013Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2993096Z               "line": 8503
2026-06-20T03:13:21.2993172Z             },
2026-06-20T03:13:21.2993253Z             {
2026-06-20T03:13:21.2993353Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.2993449Z               "line": 8561
2026-06-20T03:13:21.2993529Z             }
2026-06-20T03:13:21.2993605Z           ]
2026-06-20T03:13:21.2993687Z         }
2026-06-20T03:13:21.2993764Z       }
2026-06-20T03:13:21.2993844Z     },
2026-06-20T03:13:21.2993925Z     {
2026-06-20T03:13:21.2994021Z       "id": "REQ-TERM-6",
2026-06-20T03:13:21.2995100Z       "title": "Thread-spanning digest across session boundaries: a per-endpoint session ledger (`<perch>/sessions.log`) appended at first bind and by `api boundary` on `/clear`|`/compact` session rotation, the digest enumerating the last K sessions so its rolling window bridges a boundary, and a distinctive in-timeline boundary marker (DigestEntry::Boundary). The digest follows the live-agent thread, not a single session.",
2026-06-20T03:13:21.2995204Z       "requiredStages": [
2026-06-20T03:13:21.2995285Z         "impl",
2026-06-20T03:13:21.2995362Z         "unit",
2026-06-20T03:13:21.2995443Z         "int"
2026-06-20T03:13:21.2995523Z       ],
2026-06-20T03:13:21.2995609Z       "stages": {
2026-06-20T03:13:21.2995691Z         "doc": {
2026-06-20T03:13:21.2995791Z           "complete": false,
2026-06-20T03:13:21.2995881Z           "evidence": []
2026-06-20T03:13:21.2995963Z         },
2026-06-20T03:13:21.2996049Z         "impl": {
2026-06-20T03:13:21.2996139Z           "complete": true,
2026-06-20T03:13:21.2996225Z           "evidence": [
2026-06-20T03:13:21.2996302Z             {
2026-06-20T03:13:21.2996425Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-20T03:13:21.2996515Z               "line": 132
2026-06-20T03:13:21.2996593Z             },
2026-06-20T03:13:21.2996674Z             {
2026-06-20T03:13:21.2996778Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-20T03:13:21.2996854Z               "line": 187
2026-06-20T03:13:21.2996922Z             },
2026-06-20T03:13:21.2997007Z             {
2026-06-20T03:13:21.2997126Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-20T03:13:21.2997294Z               "line": 17
2026-06-20T03:13:21.2997378Z             },
2026-06-20T03:13:21.2997510Z             {
2026-06-20T03:13:21.2997630Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-20T03:13:21.2997714Z               "line": 104
2026-06-20T03:13:21.2997785Z             },
2026-06-20T03:13:21.2997867Z             {
2026-06-20T03:13:21.2997976Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T03:13:21.2998062Z               "line": 319
2026-06-20T03:13:21.2998138Z             },
2026-06-20T03:13:21.2998220Z             {
2026-06-20T03:13:21.2998325Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T03:13:21.2998414Z               "line": 396
2026-06-20T03:13:21.2998496Z             }
2026-06-20T03:13:21.2998568Z           ]
2026-06-20T03:13:21.2998649Z         },
2026-06-20T03:13:21.2998729Z         "int": {
2026-06-20T03:13:21.2998820Z           "complete": true,
2026-06-20T03:13:21.2998907Z           "evidence": [
2026-06-20T03:13:21.2999068Z             {
2026-06-20T03:13:21.2999217Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-20T03:13:21.2999306Z               "line": 18
2026-06-20T03:13:21.2999387Z             }
2026-06-20T03:13:21.2999465Z           ]
2026-06-20T03:13:21.2999551Z         },
2026-06-20T03:13:21.2999630Z         "unit": {
2026-06-20T03:13:21.2999712Z           "complete": true,
2026-06-20T03:13:21.2999794Z           "evidence": [
2026-06-20T03:13:21.2999865Z             {
2026-06-20T03:13:21.2999978Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-20T03:13:21.3000063Z               "line": 135
2026-06-20T03:13:21.3000130Z             },
2026-06-20T03:13:21.3000211Z             {
2026-06-20T03:13:21.3000323Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-20T03:13:21.3000414Z               "line": 150
2026-06-20T03:13:21.3000496Z             },
2026-06-20T03:13:21.3000577Z             {
2026-06-20T03:13:21.3000681Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-20T03:13:21.3000772Z               "line": 166
2026-06-20T03:13:21.3000853Z             },
2026-06-20T03:13:21.3000933Z             {
2026-06-20T03:13:21.3001048Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-20T03:13:21.3001130Z               "line": 257
2026-06-20T03:13:21.3001211Z             },
2026-06-20T03:13:21.3001286Z             {
2026-06-20T03:13:21.3001402Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T03:13:21.3001482Z               "line": 738
2026-06-20T03:13:21.3001559Z             },
2026-06-20T03:13:21.3001639Z             {
2026-06-20T03:13:21.3001750Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T03:13:21.3001839Z               "line": 759
2026-06-20T03:13:21.3001916Z             },
2026-06-20T03:13:21.3001992Z             {
2026-06-20T03:13:21.3002117Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T03:13:21.3002197Z               "line": 726
2026-06-20T03:13:21.3002283Z             }
2026-06-20T03:13:21.3002351Z           ]
2026-06-20T03:13:21.3002432Z         }
2026-06-20T03:13:21.3002511Z       }
2026-06-20T03:13:21.3002588Z     },
2026-06-20T03:13:21.3002666Z     {
2026-06-20T03:13:21.3002747Z       "id": "REQ-TERM-7",
2026-06-20T03:13:21.3003865Z       "title": "Two-origin digest merge: spt-owned context-injection entries (psyche_download | echo_mirror | owl_message) appended by spt to the endpoint `digest.log`, timestamp-interleaved with the adapter's extracted activity records into one ordered timeline, via a distinct context-injection record category. Data model only this milestone; GUI collapse/expand and the echo-reads-digest delta loop are deferred to the surfaces that consume them.",
2026-06-20T03:13:21.3003956Z       "requiredStages": [
2026-06-20T03:13:21.3004042Z         "impl",
2026-06-20T03:13:21.3004118Z         "unit",
2026-06-20T03:13:21.3004199Z         "int"
2026-06-20T03:13:21.3004281Z       ],
2026-06-20T03:13:21.3004366Z       "stages": {
2026-06-20T03:13:21.3004547Z         "doc": {
2026-06-20T03:13:21.3004630Z           "complete": false,
2026-06-20T03:13:21.3004824Z           "evidence": []
2026-06-20T03:13:21.3004905Z         },
2026-06-20T03:13:21.3004977Z         "impl": {
2026-06-20T03:13:21.3005066Z           "complete": true,
2026-06-20T03:13:21.3005147Z           "evidence": [
2026-06-20T03:13:21.3005223Z             {
2026-06-20T03:13:21.3005337Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-20T03:13:21.3005421Z               "line": 133
2026-06-20T03:13:21.3005506Z             },
2026-06-20T03:13:21.3005574Z             {
2026-06-20T03:13:21.3005689Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-20T03:13:21.3005774Z               "line": 326
2026-06-20T03:13:21.3005855Z             },
2026-06-20T03:13:21.3005932Z             {
2026-06-20T03:13:21.3006036Z               "path": "crates/spt-live/src/inject.rs",
2026-06-20T03:13:21.3006126Z               "line": 15
2026-06-20T03:13:21.3006214Z             },
2026-06-20T03:13:21.3006299Z             {
2026-06-20T03:13:21.3006408Z               "path": "crates/spt-live/src/inject.rs",
2026-06-20T03:13:21.3006499Z               "line": 32
2026-06-20T03:13:21.3006576Z             },
2026-06-20T03:13:21.3006652Z             {
2026-06-20T03:13:21.3006770Z               "path": "crates/spt-store/src/history.rs",
2026-06-20T03:13:21.3006853Z               "line": 49
2026-06-20T03:13:21.3006933Z             },
2026-06-20T03:13:21.3007009Z             {
2026-06-20T03:13:21.3007129Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T03:13:21.3007210Z               "line": 286
2026-06-20T03:13:21.3007295Z             },
2026-06-20T03:13:21.3007376Z             {
2026-06-20T03:13:21.3007478Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T03:13:21.3007567Z               "line": 320
2026-06-20T03:13:21.3007647Z             }
2026-06-20T03:13:21.3007729Z           ]
2026-06-20T03:13:21.3007812Z         },
2026-06-20T03:13:21.3007896Z         "int": {
2026-06-20T03:13:21.3007986Z           "complete": true,
2026-06-20T03:13:21.3008076Z           "evidence": [
2026-06-20T03:13:21.3008157Z             {
2026-06-20T03:13:21.3008298Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-20T03:13:21.3008378Z               "line": 19
2026-06-20T03:13:21.3008465Z             }
2026-06-20T03:13:21.3008541Z           ]
2026-06-20T03:13:21.3008622Z         },
2026-06-20T03:13:21.3008703Z         "unit": {
2026-06-20T03:13:21.3008785Z           "complete": true,
2026-06-20T03:13:21.3008875Z           "evidence": [
2026-06-20T03:13:21.3009027Z             {
2026-06-20T03:13:21.3009128Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-20T03:13:21.3009209Z               "line": 455
2026-06-20T03:13:21.3009294Z             },
2026-06-20T03:13:21.3009366Z             {
2026-06-20T03:13:21.3009472Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-20T03:13:21.3009557Z               "line": 568
2026-06-20T03:13:21.3009647Z             },
2026-06-20T03:13:21.3009730Z             {
2026-06-20T03:13:21.3009838Z               "path": "crates/spt-live/src/inject.rs",
2026-06-20T03:13:21.3009924Z               "line": 58
2026-06-20T03:13:21.3009996Z             },
2026-06-20T03:13:21.3010077Z             {
2026-06-20T03:13:21.3010181Z               "path": "crates/spt-live/src/inject.rs",
2026-06-20T03:13:21.3010258Z               "line": 77
2026-06-20T03:13:21.3010335Z             },
2026-06-20T03:13:21.3010416Z             {
2026-06-20T03:13:21.3010519Z               "path": "crates/spt-live/src/inject.rs",
2026-06-20T03:13:21.3010600Z               "line": 87
2026-06-20T03:13:21.3010681Z             },
2026-06-20T03:13:21.3010757Z             {
2026-06-20T03:13:21.3010864Z               "path": "crates/spt-store/src/history.rs",
2026-06-20T03:13:21.3010945Z               "line": 94
2026-06-20T03:13:21.3011027Z             },
2026-06-20T03:13:21.3011109Z             {
2026-06-20T03:13:21.3011323Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T03:13:21.3011418Z               "line": 691
2026-06-20T03:13:21.3011709Z             },
2026-06-20T03:13:21.3011790Z             {
2026-06-20T03:13:21.3011899Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T03:13:21.3011981Z               "line": 716
2026-06-20T03:13:21.3012066Z             }
2026-06-20T03:13:21.3012147Z           ]
2026-06-20T03:13:21.3012228Z         }
2026-06-20T03:13:21.3012310Z       }
2026-06-20T03:13:21.3012386Z     },
2026-06-20T03:13:21.3012467Z     {
2026-06-20T03:13:21.3012553Z       "id": "REQ-UPD-1",
2026-06-20T03:13:21.3012677Z       "title": "Peer-propagated update over P2P",
2026-06-20T03:13:21.3012762Z       "requiredStages": [
2026-06-20T03:13:21.3012843Z         "impl",
2026-06-20T03:13:21.3012930Z         "unit",
2026-06-20T03:13:21.3013016Z         "int"
2026-06-20T03:13:21.3013096Z       ],
2026-06-20T03:13:21.3013178Z       "stages": {
2026-06-20T03:13:21.3013259Z         "doc": {
2026-06-20T03:13:21.3013354Z           "complete": false,
2026-06-20T03:13:21.3013443Z           "evidence": []
2026-06-20T03:13:21.3013529Z         },
2026-06-20T03:13:21.3013611Z         "impl": {
2026-06-20T03:13:21.3013697Z           "complete": true,
2026-06-20T03:13:21.3013786Z           "evidence": [
2026-06-20T03:13:21.3013873Z             {
2026-06-20T03:13:21.3013987Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T03:13:21.3014072Z               "line": 28
2026-06-20T03:13:21.3014144Z             },
2026-06-20T03:13:21.3014226Z             {
2026-06-20T03:13:21.3014331Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T03:13:21.3014411Z               "line": 103
2026-06-20T03:13:21.3014492Z             },
2026-06-20T03:13:21.3014570Z             {
2026-06-20T03:13:21.3014688Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T03:13:21.3014774Z               "line": 342
2026-06-20T03:13:21.3014846Z             },
2026-06-20T03:13:21.3014936Z             {
2026-06-20T03:13:21.3015040Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T03:13:21.3015132Z               "line": 22
2026-06-20T03:13:21.3015214Z             },
2026-06-20T03:13:21.3015288Z             {
2026-06-20T03:13:21.3015398Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T03:13:21.3015480Z               "line": 207
2026-06-20T03:13:21.3015566Z             },
2026-06-20T03:13:21.3015646Z             {
2026-06-20T03:13:21.3015749Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T03:13:21.3015836Z               "line": 283
2026-06-20T03:13:21.3015911Z             },
2026-06-20T03:13:21.3015991Z             {
2026-06-20T03:13:21.3016115Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T03:13:21.3016201Z               "line": 340
2026-06-20T03:13:21.3016282Z             },
2026-06-20T03:13:21.3016362Z             {
2026-06-20T03:13:21.3016468Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-20T03:13:21.3016559Z               "line": 37
2026-06-20T03:13:21.3016634Z             }
2026-06-20T03:13:21.3016725Z           ]
2026-06-20T03:13:21.3016802Z         },
2026-06-20T03:13:21.3016883Z         "int": {
2026-06-20T03:13:21.3016978Z           "complete": true,
2026-06-20T03:13:21.3017055Z           "evidence": [
2026-06-20T03:13:21.3017141Z             {
2026-06-20T03:13:21.3017259Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-20T03:13:21.3017345Z               "line": 207
2026-06-20T03:13:21.3017427Z             },
2026-06-20T03:13:21.3017507Z             {
2026-06-20T03:13:21.3017622Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T03:13:21.3017703Z               "line": 1082
2026-06-20T03:13:21.3017794Z             }
2026-06-20T03:13:21.3017874Z           ]
2026-06-20T03:13:21.3017946Z         },
2026-06-20T03:13:21.3018028Z         "unit": {
2026-06-20T03:13:21.3018109Z           "complete": true,
2026-06-20T03:13:21.3018275Z           "evidence": [
2026-06-20T03:13:21.3018343Z             {
2026-06-20T03:13:21.3018461Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T03:13:21.3018612Z               "line": 490
2026-06-20T03:13:21.3018689Z             },
2026-06-20T03:13:21.3018778Z             {
2026-06-20T03:13:21.3018882Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T03:13:21.3019035Z               "line": 616
2026-06-20T03:13:21.3019112Z             },
2026-06-20T03:13:21.3019196Z             {
2026-06-20T03:13:21.3019321Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-20T03:13:21.3019412Z               "line": 277
2026-06-20T03:13:21.3019501Z             },
2026-06-20T03:13:21.3019582Z             {
2026-06-20T03:13:21.3019688Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-20T03:13:21.3019769Z               "line": 124
2026-06-20T03:13:21.3019845Z             },
2026-06-20T03:13:21.3019931Z             {
2026-06-20T03:13:21.3020022Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-20T03:13:21.3020117Z               "line": 200
2026-06-20T03:13:21.3020198Z             }
2026-06-20T03:13:21.3020285Z           ]
2026-06-20T03:13:21.3020361Z         }
2026-06-20T03:13:21.3020441Z       }
2026-06-20T03:13:21.3020522Z     },
2026-06-20T03:13:21.3020600Z     {
2026-06-20T03:13:21.3020680Z       "id": "REQ-UPD-2",
2026-06-20T03:13:21.3020818Z       "title": "All binaries signature-verified before handoff",
2026-06-20T03:13:21.3020914Z       "requiredStages": [
2026-06-20T03:13:21.3020995Z         "impl",
2026-06-20T03:13:21.3021080Z         "unit"
2026-06-20T03:13:21.3021155Z       ],
2026-06-20T03:13:21.3021236Z       "stages": {
2026-06-20T03:13:21.3021317Z         "doc": {
2026-06-20T03:13:21.3021401Z           "complete": false,
2026-06-20T03:13:21.3021486Z           "evidence": []
2026-06-20T03:13:21.3021558Z         },
2026-06-20T03:13:21.3021640Z         "impl": {
2026-06-20T03:13:21.3021735Z           "complete": true,
2026-06-20T03:13:21.3021825Z           "evidence": [
2026-06-20T03:13:21.3021907Z             {
2026-06-20T03:13:21.3022012Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T03:13:21.3022101Z               "line": 343
2026-06-20T03:13:21.3022183Z             },
2026-06-20T03:13:21.3022264Z             {
2026-06-20T03:13:21.3022383Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T03:13:21.3022464Z               "line": 476
2026-06-20T03:13:21.3022551Z             },
2026-06-20T03:13:21.3022627Z             {
2026-06-20T03:13:21.3022736Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.3022812Z               "line": 29
2026-06-20T03:13:21.3022894Z             },
2026-06-20T03:13:21.3022970Z             {
2026-06-20T03:13:21.3023079Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.3023167Z               "line": 271
2026-06-20T03:13:21.3023247Z             },
2026-06-20T03:13:21.3023327Z             {
2026-06-20T03:13:21.3023442Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.3023534Z               "line": 288
2026-06-20T03:13:21.3023613Z             },
2026-06-20T03:13:21.3023695Z             {
2026-06-20T03:13:21.3023811Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.3023895Z               "line": 408
2026-06-20T03:13:21.3023975Z             },
2026-06-20T03:13:21.3024051Z             {
2026-06-20T03:13:21.3024161Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.3024243Z               "line": 558
2026-06-20T03:13:21.3024327Z             },
2026-06-20T03:13:21.3024408Z             {
2026-06-20T03:13:21.3024515Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-20T03:13:21.3024595Z               "line": 155
2026-06-20T03:13:21.3024675Z             }
2026-06-20T03:13:21.3024758Z           ]
2026-06-20T03:13:21.3024843Z         },
2026-06-20T03:13:21.3024915Z         "int": {
2026-06-20T03:13:21.3024999Z           "complete": false,
2026-06-20T03:13:21.3025191Z           "evidence": []
2026-06-20T03:13:21.3025277Z         },
2026-06-20T03:13:21.3025445Z         "unit": {
2026-06-20T03:13:21.3025529Z           "complete": true,
2026-06-20T03:13:21.3025615Z           "evidence": [
2026-06-20T03:13:21.3025687Z             {
2026-06-20T03:13:21.3025807Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.3025886Z               "line": 750
2026-06-20T03:13:21.3025963Z             },
2026-06-20T03:13:21.3026046Z             {
2026-06-20T03:13:21.3026159Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.3026244Z               "line": 811
2026-06-20T03:13:21.3026319Z             },
2026-06-20T03:13:21.3026401Z             {
2026-06-20T03:13:21.3026509Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.3026589Z               "line": 825
2026-06-20T03:13:21.3026671Z             },
2026-06-20T03:13:21.3026752Z             {
2026-06-20T03:13:21.3026875Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.3026956Z               "line": 841
2026-06-20T03:13:21.3027053Z             },
2026-06-20T03:13:21.3027134Z             {
2026-06-20T03:13:21.3027247Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.3027329Z               "line": 932
2026-06-20T03:13:21.3027400Z             },
2026-06-20T03:13:21.3027481Z             {
2026-06-20T03:13:21.3027590Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-20T03:13:21.3027673Z               "line": 414
2026-06-20T03:13:21.3027753Z             },
2026-06-20T03:13:21.3027838Z             {
2026-06-20T03:13:21.3027944Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-20T03:13:21.3028021Z               "line": 427
2026-06-20T03:13:21.3028106Z             },
2026-06-20T03:13:21.3028186Z             {
2026-06-20T03:13:21.3028312Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-20T03:13:21.3028392Z               "line": 410
2026-06-20T03:13:21.3028477Z             }
2026-06-20T03:13:21.3028554Z           ]
2026-06-20T03:13:21.3028622Z         }
2026-06-20T03:13:21.3028702Z       }
2026-06-20T03:13:21.3028783Z     },
2026-06-20T03:13:21.3028864Z     {
2026-06-20T03:13:21.3029144Z       "id": "REQ-UPD-3",
2026-06-20T03:13:21.3029330Z       "title": "No endpoint process terminates/suspends during self-update",
2026-06-20T03:13:21.3029428Z       "requiredStages": [
2026-06-20T03:13:21.3029508Z         "impl",
2026-06-20T03:13:21.3029590Z         "unit",
2026-06-20T03:13:21.3029667Z         "int"
2026-06-20T03:13:21.3029747Z       ],
2026-06-20T03:13:21.3029828Z       "stages": {
2026-06-20T03:13:21.3029915Z         "doc": {
2026-06-20T03:13:21.3030001Z           "complete": false,
2026-06-20T03:13:21.3030076Z           "evidence": []
2026-06-20T03:13:21.3030152Z         },
2026-06-20T03:13:21.3030235Z         "impl": {
2026-06-20T03:13:21.3030320Z           "complete": true,
2026-06-20T03:13:21.3030400Z           "evidence": [
2026-06-20T03:13:21.3030487Z             {
2026-06-20T03:13:21.3030615Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T03:13:21.3030705Z               "line": 40
2026-06-20T03:13:21.3030786Z             },
2026-06-20T03:13:21.3030869Z             {
2026-06-20T03:13:21.3030977Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T03:13:21.3031068Z               "line": 87
2026-06-20T03:13:21.3031174Z             },
2026-06-20T03:13:21.3031254Z             {
2026-06-20T03:13:21.3031354Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T03:13:21.3031436Z               "line": 994
2026-06-20T03:13:21.3031518Z             },
2026-06-20T03:13:21.3031602Z             {
2026-06-20T03:13:21.3031710Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T03:13:21.3031791Z               "line": 1794
2026-06-20T03:13:21.3031873Z             },
2026-06-20T03:13:21.3031942Z             {
2026-06-20T03:13:21.3032061Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-20T03:13:21.3032281Z               "line": 26
2026-06-20T03:13:21.3032357Z             },
2026-06-20T03:13:21.3032534Z             {
2026-06-20T03:13:21.3032638Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-20T03:13:21.3032729Z               "line": 114
2026-06-20T03:13:21.3032806Z             },
2026-06-20T03:13:21.3032887Z             {
2026-06-20T03:13:21.3032991Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-20T03:13:21.3033083Z               "line": 246
2026-06-20T03:13:21.3033168Z             },
2026-06-20T03:13:21.3033249Z             {
2026-06-20T03:13:21.3033353Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.3033440Z               "line": 2442
2026-06-20T03:13:21.3033520Z             }
2026-06-20T03:13:21.3033587Z           ]
2026-06-20T03:13:21.3033663Z         },
2026-06-20T03:13:21.3033746Z         "int": {
2026-06-20T03:13:21.3033830Z           "complete": true,
2026-06-20T03:13:21.3033916Z           "evidence": [
2026-06-20T03:13:21.3033998Z             {
2026-06-20T03:13:21.3034122Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-20T03:13:21.3034202Z               "line": 58
2026-06-20T03:13:21.3034288Z             }
2026-06-20T03:13:21.3034366Z           ]
2026-06-20T03:13:21.3034451Z         },
2026-06-20T03:13:21.3034540Z         "unit": {
2026-06-20T03:13:21.3034616Z           "complete": true,
2026-06-20T03:13:21.3034703Z           "evidence": [
2026-06-20T03:13:21.3034779Z             {
2026-06-20T03:13:21.3034897Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T03:13:21.3034983Z               "line": 532
2026-06-20T03:13:21.3035065Z             },
2026-06-20T03:13:21.3035146Z             {
2026-06-20T03:13:21.3035259Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T03:13:21.3035346Z               "line": 585
2026-06-20T03:13:21.3035432Z             },
2026-06-20T03:13:21.3035517Z             {
2026-06-20T03:13:21.3035622Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T03:13:21.3035713Z               "line": 653
2026-06-20T03:13:21.3035789Z             },
2026-06-20T03:13:21.3035870Z             {
2026-06-20T03:13:21.3035981Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T03:13:21.3036057Z               "line": 1102
2026-06-20T03:13:21.3036142Z             },
2026-06-20T03:13:21.3036223Z             {
2026-06-20T03:13:21.3036329Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-20T03:13:21.3036418Z               "line": 271
2026-06-20T03:13:21.3036500Z             },
2026-06-20T03:13:21.3036581Z             {
2026-06-20T03:13:21.3036686Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-20T03:13:21.3036771Z               "line": 295
2026-06-20T03:13:21.3036852Z             },
2026-06-20T03:13:21.3036923Z             {
2026-06-20T03:13:21.3037036Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-20T03:13:21.3037116Z               "line": 316
2026-06-20T03:13:21.3037206Z             },
2026-06-20T03:13:21.3037288Z             {
2026-06-20T03:13:21.3037398Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-20T03:13:21.3037492Z               "line": 332
2026-06-20T03:13:21.3037579Z             }
2026-06-20T03:13:21.3037660Z           ]
2026-06-20T03:13:21.3037736Z         }
2026-06-20T03:13:21.3037821Z       }
2026-06-20T03:13:21.3037889Z     },
2026-06-20T03:13:21.3037970Z     {
2026-06-20T03:13:21.3038060Z       "id": "REQ-UPD-4",
2026-06-20T03:13:21.3038237Z       "title": "Update gated on user confirmation by default; opt-in full-auto",
2026-06-20T03:13:21.3038332Z       "requiredStages": [
2026-06-20T03:13:21.3038404Z         "impl",
2026-06-20T03:13:21.3038485Z         "unit"
2026-06-20T03:13:21.3038566Z       ],
2026-06-20T03:13:21.3038651Z       "stages": {
2026-06-20T03:13:21.3038737Z         "doc": {
2026-06-20T03:13:21.3038829Z           "complete": false,
2026-06-20T03:13:21.3038919Z           "evidence": []
2026-06-20T03:13:21.3039192Z         },
2026-06-20T03:13:21.3039281Z         "impl": {
2026-06-20T03:13:21.3039358Z           "complete": true,
2026-06-20T03:13:21.3039577Z           "evidence": [
2026-06-20T03:13:21.3039661Z             {
2026-06-20T03:13:21.3039781Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T03:13:21.3039871Z               "line": 41
2026-06-20T03:13:21.3039941Z             },
2026-06-20T03:13:21.3040031Z             {
2026-06-20T03:13:21.3040145Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T03:13:21.3040237Z               "line": 88
2026-06-20T03:13:21.3040307Z             },
2026-06-20T03:13:21.3040388Z             {
2026-06-20T03:13:21.3040504Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-20T03:13:21.3040585Z               "line": 23
2026-06-20T03:13:21.3040669Z             },
2026-06-20T03:13:21.3040747Z             {
2026-06-20T03:13:21.3040865Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-20T03:13:21.3040960Z               "line": 56
2026-06-20T03:13:21.3041042Z             },
2026-06-20T03:13:21.3041124Z             {
2026-06-20T03:13:21.3041238Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-20T03:13:21.3041318Z               "line": 77
2026-06-20T03:13:21.3041400Z             },
2026-06-20T03:13:21.3041477Z             {
2026-06-20T03:13:21.3041595Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T03:13:21.3044287Z               "line": 236
2026-06-20T03:13:21.3044395Z             },
2026-06-20T03:13:21.3044476Z             {
2026-06-20T03:13:21.3044601Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T03:13:21.3044682Z               "line": 108
2026-06-20T03:13:21.3044767Z             },
2026-06-20T03:13:21.3044849Z             {
2026-06-20T03:13:21.3044969Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T03:13:21.3045053Z               "line": 270
2026-06-20T03:13:21.3045134Z             },
2026-06-20T03:13:21.3045215Z             {
2026-06-20T03:13:21.3045335Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.3045424Z               "line": 2441
2026-06-20T03:13:21.3045510Z             }
2026-06-20T03:13:21.3045592Z           ]
2026-06-20T03:13:21.3045673Z         },
2026-06-20T03:13:21.3045753Z         "int": {
2026-06-20T03:13:21.3045849Z           "complete": false,
2026-06-20T03:13:21.3045930Z           "evidence": []
2026-06-20T03:13:21.3046012Z         },
2026-06-20T03:13:21.3046096Z         "unit": {
2026-06-20T03:13:21.3046183Z           "complete": true,
2026-06-20T03:13:21.3046273Z           "evidence": [
2026-06-20T03:13:21.3046350Z             {
2026-06-20T03:13:21.3046473Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T03:13:21.3046556Z               "line": 581
2026-06-20T03:13:21.3046640Z             },
2026-06-20T03:13:21.3046712Z             {
2026-06-20T03:13:21.3046827Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T03:13:21.3046917Z               "line": 706
2026-06-20T03:13:21.3047002Z             },
2026-06-20T03:13:21.3047088Z             {
2026-06-20T03:13:21.3047200Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-20T03:13:21.3047293Z               "line": 384
2026-06-20T03:13:21.3047378Z             },
2026-06-20T03:13:21.3047454Z             {
2026-06-20T03:13:21.3047568Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-20T03:13:21.3047643Z               "line": 102
2026-06-20T03:13:21.3047728Z             },
2026-06-20T03:13:21.3047805Z             {
2026-06-20T03:13:21.3047911Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-20T03:13:21.3047996Z               "line": 123
2026-06-20T03:13:21.3048077Z             },
2026-06-20T03:13:21.3048149Z             {
2026-06-20T03:13:21.3048249Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-20T03:13:21.3048334Z               "line": 142
2026-06-20T03:13:21.3048420Z             },
2026-06-20T03:13:21.3048497Z             {
2026-06-20T03:13:21.3048711Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T03:13:21.3048798Z               "line": 582
2026-06-20T03:13:21.3049021Z             },
2026-06-20T03:13:21.3049103Z             {
2026-06-20T03:13:21.3049217Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T03:13:21.3049303Z               "line": 566
2026-06-20T03:13:21.3049384Z             },
2026-06-20T03:13:21.3049465Z             {
2026-06-20T03:13:21.3049564Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.3049645Z               "line": 8256
2026-06-20T03:13:21.3049728Z             }
2026-06-20T03:13:21.3049804Z           ]
2026-06-20T03:13:21.3049884Z         }
2026-06-20T03:13:21.3049960Z       }
2026-06-20T03:13:21.3050028Z     },
2026-06-20T03:13:21.3050109Z     {
2026-06-20T03:13:21.3050194Z       "id": "REQ-UPD-5",
2026-06-20T03:13:21.3050336Z       "title": "spt-core ripple-updates registered adapters",
2026-06-20T03:13:21.3050426Z       "requiredStages": [
2026-06-20T03:13:21.3050515Z         "impl",
2026-06-20T03:13:21.3050591Z         "unit"
2026-06-20T03:13:21.3050672Z       ],
2026-06-20T03:13:21.3050759Z       "stages": {
2026-06-20T03:13:21.3050839Z         "doc": {
2026-06-20T03:13:21.3050929Z           "complete": false,
2026-06-20T03:13:21.3051007Z           "evidence": []
2026-06-20T03:13:21.3051093Z         },
2026-06-20T03:13:21.3051173Z         "impl": {
2026-06-20T03:13:21.3051263Z           "complete": true,
2026-06-20T03:13:21.3051341Z           "evidence": [
2026-06-20T03:13:21.3051426Z             {
2026-06-20T03:13:21.3051554Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T03:13:21.3051641Z               "line": 27
2026-06-20T03:13:21.3051722Z             },
2026-06-20T03:13:21.3051803Z             {
2026-06-20T03:13:21.3051926Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T03:13:21.3052004Z               "line": 87
2026-06-20T03:13:21.3052089Z             },
2026-06-20T03:13:21.3052160Z             {
2026-06-20T03:13:21.3052299Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T03:13:21.3052385Z               "line": 145
2026-06-20T03:13:21.3052470Z             },
2026-06-20T03:13:21.3052552Z             {
2026-06-20T03:13:21.3052662Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.3052751Z               "line": 492
2026-06-20T03:13:21.3052827Z             },
2026-06-20T03:13:21.3052908Z             {
2026-06-20T03:13:21.3053021Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.3053105Z               "line": 546
2026-06-20T03:13:21.3053182Z             }
2026-06-20T03:13:21.3053258Z           ]
2026-06-20T03:13:21.3053340Z         },
2026-06-20T03:13:21.3053416Z         "int": {
2026-06-20T03:13:21.3053506Z           "complete": false,
2026-06-20T03:13:21.3053588Z           "evidence": []
2026-06-20T03:13:21.3053668Z         },
2026-06-20T03:13:21.3053745Z         "unit": {
2026-06-20T03:13:21.3053826Z           "complete": true,
2026-06-20T03:13:21.3053917Z           "evidence": [
2026-06-20T03:13:21.3054002Z             {
2026-06-20T03:13:21.3054130Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T03:13:21.3054217Z               "line": 272
2026-06-20T03:13:21.3054293Z             },
2026-06-20T03:13:21.3054374Z             {
2026-06-20T03:13:21.3054488Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T03:13:21.3054571Z               "line": 286
2026-06-20T03:13:21.3054645Z             },
2026-06-20T03:13:21.3054722Z             {
2026-06-20T03:13:21.3054847Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T03:13:21.3054932Z               "line": 300
2026-06-20T03:13:21.3055013Z             },
2026-06-20T03:13:21.3055089Z             {
2026-06-20T03:13:21.3055210Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T03:13:21.3055289Z               "line": 314
2026-06-20T03:13:21.3055375Z             },
2026-06-20T03:13:21.3055576Z             {
2026-06-20T03:13:21.3055699Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T03:13:21.3055861Z               "line": 348
2026-06-20T03:13:21.3055942Z             },
2026-06-20T03:13:21.3056027Z             {
2026-06-20T03:13:21.3056152Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.3056238Z               "line": 1071
2026-06-20T03:13:21.3056323Z             }
2026-06-20T03:13:21.3056399Z           ]
2026-06-20T03:13:21.3056482Z         }
2026-06-20T03:13:21.3056557Z       }
2026-06-20T03:13:21.3056642Z     },
2026-06-20T03:13:21.3056714Z     {
2026-06-20T03:13:21.3056801Z       "id": "REQ-UPD-6",
2026-06-20T03:13:21.3057601Z       "title": "Platform-targeted update sets and debug rollout: signed multi-platform update metadata, recipient platform selection, channel-scoped monotonic counters, debug-channel opt-in via release-key overlay, local staging plus pull-based peer propagation, and maintainer-only convergence tooling (ADR-0016)",
2026-06-20T03:13:21.3057707Z       "requiredStages": [
2026-06-20T03:13:21.3057788Z         "doc",
2026-06-20T03:13:21.3057877Z         "impl",
2026-06-20T03:13:21.3057962Z         "unit",
2026-06-20T03:13:21.3058043Z         "int"
2026-06-20T03:13:21.3058119Z       ],
2026-06-20T03:13:21.3058203Z       "stages": {
2026-06-20T03:13:21.3058279Z         "doc": {
2026-06-20T03:13:21.3058360Z           "complete": true,
2026-06-20T03:13:21.3058447Z           "evidence": [
2026-06-20T03:13:21.3058532Z             {
2026-06-20T03:13:21.3058656Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-20T03:13:21.3058738Z               "line": 3
2026-06-20T03:13:21.3058819Z             },
2026-06-20T03:13:21.3058894Z             {
2026-06-20T03:13:21.3059081Z               "path": "docs/DEBUG-ROLLOUT.md",
2026-06-20T03:13:21.3059162Z               "line": 3
2026-06-20T03:13:21.3059238Z             },
2026-06-20T03:13:21.3059325Z             {
2026-06-20T03:13:21.3059467Z               "path": "docs/adr/0016-platform-targeted-update-sets.md",
2026-06-20T03:13:21.3059557Z               "line": 3
2026-06-20T03:13:21.3059629Z             }
2026-06-20T03:13:21.3059715Z           ]
2026-06-20T03:13:21.3059787Z         },
2026-06-20T03:13:21.3059867Z         "impl": {
2026-06-20T03:13:21.3059954Z           "complete": true,
2026-06-20T03:13:21.3060044Z           "evidence": [
2026-06-20T03:13:21.3060115Z             {
2026-06-20T03:13:21.3060230Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T03:13:21.3060322Z               "line": 76
2026-06-20T03:13:21.3060392Z             },
2026-06-20T03:13:21.3060478Z             {
2026-06-20T03:13:21.3060593Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T03:13:21.3060679Z               "line": 212
2026-06-20T03:13:21.3060763Z             },
2026-06-20T03:13:21.3060838Z             {
2026-06-20T03:13:21.3060949Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T03:13:21.3061038Z               "line": 69
2026-06-20T03:13:21.3061118Z             },
2026-06-20T03:13:21.3061199Z             {
2026-06-20T03:13:21.3061305Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T03:13:21.3061390Z               "line": 133
2026-06-20T03:13:21.3061471Z             },
2026-06-20T03:13:21.3061557Z             {
2026-06-20T03:13:21.3061681Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T03:13:21.3061762Z               "line": 243
2026-06-20T03:13:21.3061843Z             },
2026-06-20T03:13:21.3061929Z             {
2026-06-20T03:13:21.3062043Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T03:13:21.3062124Z               "line": 406
2026-06-20T03:13:21.3062196Z             },
2026-06-20T03:13:21.3062277Z             {
2026-06-20T03:13:21.3062391Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T03:13:21.3062482Z               "line": 534
2026-06-20T03:13:21.3062554Z             },
2026-06-20T03:13:21.3062639Z             {
2026-06-20T03:13:21.3062874Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T03:13:21.3062954Z               "line": 548
2026-06-20T03:13:21.3063127Z             },
2026-06-20T03:13:21.3063198Z             {
2026-06-20T03:13:21.3063316Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T03:13:21.3063396Z               "line": 603
2026-06-20T03:13:21.3063482Z             },
2026-06-20T03:13:21.3063558Z             {
2026-06-20T03:13:21.3063671Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T03:13:21.3063761Z               "line": 634
2026-06-20T03:13:21.3063833Z             },
2026-06-20T03:13:21.3063910Z             {
2026-06-20T03:13:21.3064032Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-20T03:13:21.3064114Z               "line": 137
2026-06-20T03:13:21.3064196Z             },
2026-06-20T03:13:21.3064272Z             {
2026-06-20T03:13:21.3064395Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-20T03:13:21.3064472Z               "line": 184
2026-06-20T03:13:21.3064567Z             },
2026-06-20T03:13:21.3064648Z             {
2026-06-20T03:13:21.3064773Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T03:13:21.3064863Z               "line": 78
2026-06-20T03:13:21.3064935Z             },
2026-06-20T03:13:21.3065020Z             {
2026-06-20T03:13:21.3065126Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T03:13:21.3065206Z               "line": 114
2026-06-20T03:13:21.3065287Z             },
2026-06-20T03:13:21.3065368Z             {
2026-06-20T03:13:21.3065478Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T03:13:21.3065558Z               "line": 185
2026-06-20T03:13:21.3065640Z             },
2026-06-20T03:13:21.3065722Z             {
2026-06-20T03:13:21.3065835Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T03:13:21.3065922Z               "line": 260
2026-06-20T03:13:21.3066003Z             },
2026-06-20T03:13:21.3066075Z             {
2026-06-20T03:13:21.3066188Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T03:13:21.3066282Z               "line": 292
2026-06-20T03:13:21.3066364Z             },
2026-06-20T03:13:21.3066445Z             {
2026-06-20T03:13:21.3066554Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T03:13:21.3066644Z               "line": 323
2026-06-20T03:13:21.3066727Z             },
2026-06-20T03:13:21.3066803Z             {
2026-06-20T03:13:21.3066921Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T03:13:21.3067008Z               "line": 346
2026-06-20T03:13:21.3067094Z             },
2026-06-20T03:13:21.3067175Z             {
2026-06-20T03:13:21.3067293Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T03:13:21.3067380Z               "line": 388
2026-06-20T03:13:21.3067455Z             },
2026-06-20T03:13:21.3067536Z             {
2026-06-20T03:13:21.3067647Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T03:13:21.3067752Z               "line": 398
2026-06-20T03:13:21.3067833Z             },
2026-06-20T03:13:21.3067914Z             {
2026-06-20T03:13:21.3068019Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T03:13:21.3068104Z               "line": 410
2026-06-20T03:13:21.3068185Z             },
2026-06-20T03:13:21.3068267Z             {
2026-06-20T03:13:21.3068372Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T03:13:21.3068456Z               "line": 420
2026-06-20T03:13:21.3068541Z             },
2026-06-20T03:13:21.3068627Z             {
2026-06-20T03:13:21.3068736Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T03:13:21.3068811Z               "line": 439
2026-06-20T03:13:21.3068892Z             },
2026-06-20T03:13:21.3069055Z             {
2026-06-20T03:13:21.3069164Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T03:13:21.3069255Z               "line": 449
2026-06-20T03:13:21.3069331Z             },
2026-06-20T03:13:21.3069627Z             {
2026-06-20T03:13:21.3069732Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.3069914Z               "line": 94
2026-06-20T03:13:21.3069984Z             },
2026-06-20T03:13:21.3070065Z             {
2026-06-20T03:13:21.3070180Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.3070262Z               "line": 120
2026-06-20T03:13:21.3070337Z             },
2026-06-20T03:13:21.3070423Z             {
2026-06-20T03:13:21.3070524Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.3070614Z               "line": 135
2026-06-20T03:13:21.3070695Z             },
2026-06-20T03:13:21.3070776Z             {
2026-06-20T03:13:21.3070882Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.3070961Z               "line": 162
2026-06-20T03:13:21.3071043Z             },
2026-06-20T03:13:21.3071125Z             {
2026-06-20T03:13:21.3071230Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.3071319Z               "line": 174
2026-06-20T03:13:21.3071399Z             },
2026-06-20T03:13:21.3071485Z             {
2026-06-20T03:13:21.3071589Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.3071683Z               "line": 185
2026-06-20T03:13:21.3071754Z             },
2026-06-20T03:13:21.3071831Z             {
2026-06-20T03:13:21.3071932Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.3072012Z               "line": 451
2026-06-20T03:13:21.3072103Z             },
2026-06-20T03:13:21.3072175Z             {
2026-06-20T03:13:21.3072289Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.3072365Z               "line": 573
2026-06-20T03:13:21.3072447Z             },
2026-06-20T03:13:21.3072522Z             {
2026-06-20T03:13:21.3072627Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-20T03:13:21.3072708Z               "line": 171
2026-06-20T03:13:21.3072795Z             },
2026-06-20T03:13:21.3072875Z             {
2026-06-20T03:13:21.3072975Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-20T03:13:21.3073062Z               "line": 65
2026-06-20T03:13:21.3073138Z             },
2026-06-20T03:13:21.3073218Z             {
2026-06-20T03:13:21.3073333Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-20T03:13:21.3073410Z               "line": 71
2026-06-20T03:13:21.3073495Z             },
2026-06-20T03:13:21.3073576Z             {
2026-06-20T03:13:21.3073687Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-20T03:13:21.3073768Z               "line": 77
2026-06-20T03:13:21.3073848Z             },
2026-06-20T03:13:21.3073924Z             {
2026-06-20T03:13:21.3074028Z               "path": "crates/xtask/src/main.rs",
2026-06-20T03:13:21.3074109Z               "line": 778
2026-06-20T03:13:21.3074193Z             },
2026-06-20T03:13:21.3074273Z             {
2026-06-20T03:13:21.3074379Z               "path": "crates/xtask/src/main.rs",
2026-06-20T03:13:21.3074461Z               "line": 795
2026-06-20T03:13:21.3074546Z             },
2026-06-20T03:13:21.3074626Z             {
2026-06-20T03:13:21.3074727Z               "path": "crates/xtask/src/main.rs",
2026-06-20T03:13:21.3074804Z               "line": 838
2026-06-20T03:13:21.3074884Z             },
2026-06-20T03:13:21.3074965Z             {
2026-06-20T03:13:21.3075056Z               "path": "crates/xtask/src/main.rs",
2026-06-20T03:13:21.3075146Z               "line": 981
2026-06-20T03:13:21.3075222Z             },
2026-06-20T03:13:21.3075309Z             {
2026-06-20T03:13:21.3075414Z               "path": "crates/xtask/src/main.rs",
2026-06-20T03:13:21.3075490Z               "line": 1131
2026-06-20T03:13:21.3075575Z             }
2026-06-20T03:13:21.3075653Z           ]
2026-06-20T03:13:21.3075738Z         },
2026-06-20T03:13:21.3075824Z         "int": {
2026-06-20T03:13:21.3075919Z           "complete": true,
2026-06-20T03:13:21.3076001Z           "evidence": [
2026-06-20T03:13:21.3076153Z             {
2026-06-20T03:13:21.3076287Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-20T03:13:21.3076453Z               "line": 569
2026-06-20T03:13:21.3076534Z             },
2026-06-20T03:13:21.3076612Z             {
2026-06-20T03:13:21.3076734Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-20T03:13:21.3076809Z               "line": 135
2026-06-20T03:13:21.3076886Z             }
2026-06-20T03:13:21.3076967Z           ]
2026-06-20T03:13:21.3077044Z         },
2026-06-20T03:13:21.3077129Z         "unit": {
2026-06-20T03:13:21.3077210Z           "complete": true,
2026-06-20T03:13:21.3077292Z           "evidence": [
2026-06-20T03:13:21.3077382Z             {
2026-06-20T03:13:21.3077505Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T03:13:21.3077587Z               "line": 626
2026-06-20T03:13:21.3077659Z             },
2026-06-20T03:13:21.3077739Z             {
2026-06-20T03:13:21.3077858Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T03:13:21.3077954Z               "line": 675
2026-06-20T03:13:21.3078030Z             },
2026-06-20T03:13:21.3078115Z             {
2026-06-20T03:13:21.3078236Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T03:13:21.3078316Z               "line": 696
2026-06-20T03:13:21.3078407Z             },
2026-06-20T03:13:21.3078474Z             {
2026-06-20T03:13:21.3078589Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T03:13:21.3078669Z               "line": 513
2026-06-20T03:13:21.3078750Z             },
2026-06-20T03:13:21.3078832Z             {
2026-06-20T03:13:21.3079049Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T03:13:21.3079140Z               "line": 638
2026-06-20T03:13:21.3079221Z             },
2026-06-20T03:13:21.3079301Z             {
2026-06-20T03:13:21.3079424Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T03:13:21.3079505Z               "line": 675
2026-06-20T03:13:21.3079582Z             },
2026-06-20T03:13:21.3079663Z             {
2026-06-20T03:13:21.3079781Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.3079864Z               "line": 947
2026-06-20T03:13:21.3079944Z             },
2026-06-20T03:13:21.3080029Z             {
2026-06-20T03:13:21.3080140Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.3080225Z               "line": 969
2026-06-20T03:13:21.3080306Z             },
2026-06-20T03:13:21.3080387Z             {
2026-06-20T03:13:21.3080502Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.3080583Z               "line": 986
2026-06-20T03:13:21.3080668Z             },
2026-06-20T03:13:21.3080750Z             {
2026-06-20T03:13:21.3080864Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.3080945Z               "line": 1001
2026-06-20T03:13:21.3081026Z             },
2026-06-20T03:13:21.3081098Z             {
2026-06-20T03:13:21.3081207Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.3081302Z               "line": 1027
2026-06-20T03:13:21.3081375Z             },
2026-06-20T03:13:21.3081451Z             {
2026-06-20T03:13:21.3081569Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-20T03:13:21.3081656Z               "line": 457
2026-06-20T03:13:21.3081738Z             },
2026-06-20T03:13:21.3081809Z             {
2026-06-20T03:13:21.3081936Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-20T03:13:21.3082017Z               "line": 338
2026-06-20T03:13:21.3082098Z             },
2026-06-20T03:13:21.3082182Z             {
2026-06-20T03:13:21.3082281Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.3082363Z               "line": 10549
2026-06-20T03:13:21.3082435Z             },
2026-06-20T03:13:21.3082520Z             {
2026-06-20T03:13:21.3082625Z               "path": "crates/xtask/src/main.rs",
2026-06-20T03:13:21.3082716Z               "line": 1260
2026-06-20T03:13:21.3082792Z             },
2026-06-20T03:13:21.3082983Z             {
2026-06-20T03:13:21.3083093Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-20T03:13:21.3083278Z               "line": 130
2026-06-20T03:13:21.3083370Z             }
2026-06-20T03:13:21.3083440Z           ]
2026-06-20T03:13:21.3083521Z         }
2026-06-20T03:13:21.3083602Z       }
2026-06-20T03:13:21.3083689Z     },
2026-06-20T03:13:21.3083774Z     {
2026-06-20T03:13:21.3083859Z       "id": "REQ-UPD-7",
2026-06-20T03:13:21.3085983Z       "title": "Origin-source update bootstrap (`spt update fetch`): pull the latest signed release directly from the GitHub release origin (`SaberMage/spt-releases`) — the per-platform artifact + its `<asset>.release.json` SignedRelease metadata — and stage it through the EXISTING verify→stage pipeline (the same `plan_verified` gate: two-key signature + channel + monotonic rollback floor + SHA-256), after which the normal consent-notif / `spt update apply` flow is unchanged. Closes the peer-only-discovery gap (REQ-UPD-1): a first-in-fleet / isolated node can update with no peer to pull from. The signed-release anchor keeps the GitHub transport untrusted-but-verified.",
2026-06-20T03:13:21.3086097Z       "requiredStages": [
2026-06-20T03:13:21.3086184Z         "impl",
2026-06-20T03:13:21.3086265Z         "unit"
2026-06-20T03:13:21.3086346Z       ],
2026-06-20T03:13:21.3086431Z       "stages": {
2026-06-20T03:13:21.3086513Z         "doc": {
2026-06-20T03:13:21.3086599Z           "complete": false,
2026-06-20T03:13:21.3086698Z           "evidence": []
2026-06-20T03:13:21.3086804Z         },
2026-06-20T03:13:21.3086891Z         "impl": {
2026-06-20T03:13:21.3086974Z           "complete": true,
2026-06-20T03:13:21.3087066Z           "evidence": [
2026-06-20T03:13:21.3087148Z             {
2026-06-20T03:13:21.3087261Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.3087346Z               "line": 2626
2026-06-20T03:13:21.3087426Z             }
2026-06-20T03:13:21.3087504Z           ]
2026-06-20T03:13:21.3087590Z         },
2026-06-20T03:13:21.3087675Z         "int": {
2026-06-20T03:13:21.3087756Z           "complete": false,
2026-06-20T03:13:21.3087857Z           "evidence": []
2026-06-20T03:13:21.3087942Z         },
2026-06-20T03:13:21.3088023Z         "unit": {
2026-06-20T03:13:21.3088109Z           "complete": true,
2026-06-20T03:13:21.3088195Z           "evidence": [
2026-06-20T03:13:21.3088276Z             {
2026-06-20T03:13:21.3088380Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.3088463Z               "line": 10525
2026-06-20T03:13:21.3088543Z             }
2026-06-20T03:13:21.3088628Z           ]
2026-06-20T03:13:21.3088709Z         }
2026-06-20T03:13:21.3088792Z       }
2026-06-20T03:13:21.3088876Z     },
2026-06-20T03:13:21.3089034Z     {
2026-06-20T03:13:21.3089130Z       "id": "REQ-UPD-8",
2026-06-20T03:13:21.3091581Z       "title": "Platform-safe `spt update fetch` + apply platform-guard (v0.3.1 cross-OS brick fix): `spt update fetch` stages the signed multi-platform `SignedUpdateSet` (`update-set.json` + every platform artifact it names), never a platform-blind single `SignedRelease`, so local apply selects `current_platform()` and P2P re-serve lets each peer select ITS own platform. Defense-in-depth: `apply_staged` REFUSES a staged single-release artifact unless it is platform-stamped for THIS node (an unstamped pre-v0.3.2 single, or a single stamped for another OS, fail-safe refuses — the guard that alone prevents the v0.3.1 brick where a Linux ELF was applied as `spt.exe`). UX: a friendly post-apply message (`Updated spt-core to vX.Y.Z.` + changelog URL) driven by an additive `product_version` metadata field, with a release-counter fallback when absent.",
2026-06-20T03:13:21.3091692Z       "requiredStages": [
2026-06-20T03:13:21.3091777Z         "impl",
2026-06-20T03:13:21.3091863Z         "unit"
2026-06-20T03:13:21.3091940Z       ],
2026-06-20T03:13:21.3092021Z       "stages": {
2026-06-20T03:13:21.3092106Z         "doc": {
2026-06-20T03:13:21.3092187Z           "complete": false,
2026-06-20T03:13:21.3092392Z           "evidence": []
2026-06-20T03:13:21.3092468Z         },
2026-06-20T03:13:21.3092648Z         "impl": {
2026-06-20T03:13:21.3092733Z           "complete": true,
2026-06-20T03:13:21.3092813Z           "evidence": [
2026-06-20T03:13:21.3092889Z             {
2026-06-20T03:13:21.3093023Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T03:13:21.3093104Z               "line": 77
2026-06-20T03:13:21.3093180Z             },
2026-06-20T03:13:21.3093262Z             {
2026-06-20T03:13:21.3093381Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T03:13:21.3093470Z               "line": 49
2026-06-20T03:13:21.3093553Z             },
2026-06-20T03:13:21.3093634Z             {
2026-06-20T03:13:21.3093738Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T03:13:21.3093819Z               "line": 152
2026-06-20T03:13:21.3093897Z             },
2026-06-20T03:13:21.3093968Z             {
2026-06-20T03:13:21.3094082Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T03:13:21.3094172Z               "line": 215
2026-06-20T03:13:21.3094259Z             },
2026-06-20T03:13:21.3094343Z             {
2026-06-20T03:13:21.3094444Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T03:13:21.3094531Z               "line": 230
2026-06-20T03:13:21.3094612Z             },
2026-06-20T03:13:21.3094696Z             {
2026-06-20T03:13:21.3094802Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T03:13:21.3094889Z               "line": 247
2026-06-20T03:13:21.3094969Z             },
2026-06-20T03:13:21.3095044Z             {
2026-06-20T03:13:21.3095163Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T03:13:21.3095244Z               "line": 269
2026-06-20T03:13:21.3095323Z             },
2026-06-20T03:13:21.3095399Z             {
2026-06-20T03:13:21.3095518Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.3095601Z               "line": 66
2026-06-20T03:13:21.3095680Z             },
2026-06-20T03:13:21.3095766Z             {
2026-06-20T03:13:21.3095877Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.3095981Z               "line": 154
2026-06-20T03:13:21.3096057Z             },
2026-06-20T03:13:21.3096134Z             {
2026-06-20T03:13:21.3096238Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.3096324Z               "line": 2430
2026-06-20T03:13:21.3096405Z             },
2026-06-20T03:13:21.3096482Z             {
2026-06-20T03:13:21.3096581Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.3096667Z               "line": 2493
2026-06-20T03:13:21.3096749Z             },
2026-06-20T03:13:21.3096835Z             {
2026-06-20T03:13:21.3096921Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.3097006Z               "line": 2503
2026-06-20T03:13:21.3097079Z             },
2026-06-20T03:13:21.3097164Z             {
2026-06-20T03:13:21.3097264Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.3097354Z               "line": 2510
2026-06-20T03:13:21.3097436Z             },
2026-06-20T03:13:21.3097521Z             {
2026-06-20T03:13:21.3097626Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.3097708Z               "line": 2627
2026-06-20T03:13:21.3097794Z             },
2026-06-20T03:13:21.3097868Z             {
2026-06-20T03:13:21.3097963Z               "path": "crates/xtask/src/main.rs",
2026-06-20T03:13:21.3098054Z               "line": 480
2026-06-20T03:13:21.3098136Z             },
2026-06-20T03:13:21.3098211Z             {
2026-06-20T03:13:21.3098311Z               "path": "crates/xtask/src/main.rs",
2026-06-20T03:13:21.3098403Z               "line": 494
2026-06-20T03:13:21.3098484Z             }
2026-06-20T03:13:21.3098564Z           ]
2026-06-20T03:13:21.3098635Z         },
2026-06-20T03:13:21.3098718Z         "int": {
2026-06-20T03:13:21.3098803Z           "complete": false,
2026-06-20T03:13:21.3098883Z           "evidence": []
2026-06-20T03:13:21.3099151Z         },
2026-06-20T03:13:21.3099241Z         "unit": {
2026-06-20T03:13:21.3099333Z           "complete": true,
2026-06-20T03:13:21.3099604Z           "evidence": [
2026-06-20T03:13:21.3099676Z             {
2026-06-20T03:13:21.3099799Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T03:13:21.3099890Z               "line": 476
2026-06-20T03:13:21.3099967Z             },
2026-06-20T03:13:21.3100043Z             {
2026-06-20T03:13:21.3100156Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T03:13:21.3100246Z               "line": 580
2026-06-20T03:13:21.3100328Z             },
2026-06-20T03:13:21.3100407Z             {
2026-06-20T03:13:21.3100506Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.3100592Z               "line": 10527
2026-06-20T03:13:21.3100679Z             },
2026-06-20T03:13:21.3100759Z             {
2026-06-20T03:13:21.3100858Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.3100955Z               "line": 10549
2026-06-20T03:13:21.3101031Z             }
2026-06-20T03:13:21.3101102Z           ]
2026-06-20T03:13:21.3101183Z         }
2026-06-20T03:13:21.3101261Z       }
2026-06-20T03:13:21.3101336Z     },
2026-06-20T03:13:21.3101416Z     {
2026-06-20T03:13:21.3101502Z       "id": "REQ-UPD-9",
2026-06-20T03:13:21.3103998Z       "title": "`gh_release` adapter [update] avenue (optional signing): an adapter declares `[update] avenue = \"gh_release\", repo = \"user/repo\"` (+ optional `asset`, default `adapter.spt`; + optional Ed25519 `signing_key`); spt-core's ripple compares the repo's LATEST GitHub release version against the installed adapter version and, when newer, auto-updates by fetching the release `.spt` archive (the REQ-INSTALL-9 `--release` fetch primitive) → verifies the `.spt` against `signing_key` if declared, else HTTPS+GitHub first-acquisition trust → re-extracts + re-registers the adapter root. Lets a harness adapter ship updates from its own GitHub releases with NO signing tooling or plugin coupling (removes the perri file_pull/delegated avenue blockers). Acquisition-trust mirrors `--release` + the installer first-fetch; does not alter spt-core self-update (REQ-UPD-1..8).",
2026-06-20T03:13:21.3104118Z       "requiredStages": [
2026-06-20T03:13:21.3104189Z         "doc",
2026-06-20T03:13:21.3104270Z         "impl",
2026-06-20T03:13:21.3104355Z         "unit"
2026-06-20T03:13:21.3104432Z       ],
2026-06-20T03:13:21.3104523Z       "stages": {
2026-06-20T03:13:21.3104604Z         "doc": {
2026-06-20T03:13:21.3104704Z           "complete": true,
2026-06-20T03:13:21.3104786Z           "evidence": [
2026-06-20T03:13:21.3104871Z             {
2026-06-20T03:13:21.3104961Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.3105048Z               "line": 93
2026-06-20T03:13:21.3105134Z             },
2026-06-20T03:13:21.3105218Z             {
2026-06-20T03:13:21.3105324Z               "path": "docs/MANIFEST.md",
2026-06-20T03:13:21.3105411Z               "line": 285
2026-06-20T03:13:21.3105501Z             }
2026-06-20T03:13:21.3105571Z           ]
2026-06-20T03:13:21.3105666Z         },
2026-06-20T03:13:21.3105747Z         "impl": {
2026-06-20T03:13:21.3105836Z           "complete": true,
2026-06-20T03:13:21.3105921Z           "evidence": [
2026-06-20T03:13:21.3105992Z             {
2026-06-20T03:13:21.3106132Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T03:13:21.3106212Z               "line": 128
2026-06-20T03:13:21.3106288Z             },
2026-06-20T03:13:21.3106365Z             {
2026-06-20T03:13:21.3106475Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.3106560Z               "line": 533
2026-06-20T03:13:21.3106646Z             },
2026-06-20T03:13:21.3106770Z             {
2026-06-20T03:13:21.3106931Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.3107014Z               "line": 459
2026-06-20T03:13:21.3107099Z             },
2026-06-20T03:13:21.3107176Z             {
2026-06-20T03:13:21.3107386Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.3107471Z               "line": 505
2026-06-20T03:13:21.3107624Z             },
2026-06-20T03:13:21.3107705Z             {
2026-06-20T03:13:21.3107809Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.3107895Z               "line": 928
2026-06-20T03:13:21.3107963Z             },
2026-06-20T03:13:21.3108044Z             {
2026-06-20T03:13:21.3108153Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T03:13:21.3108239Z               "line": 302
2026-06-20T03:13:21.3108325Z             },
2026-06-20T03:13:21.3108405Z             {
2026-06-20T03:13:21.3108504Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.3108590Z               "line": 5675
2026-06-20T03:13:21.3108677Z             },
2026-06-20T03:13:21.3108758Z             {
2026-06-20T03:13:21.3108862Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.3109029Z               "line": 5720
2026-06-20T03:13:21.3109110Z             },
2026-06-20T03:13:21.3109191Z             {
2026-06-20T03:13:21.3109292Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.3109388Z               "line": 5857
2026-06-20T03:13:21.3109462Z             },
2026-06-20T03:13:21.3109544Z             {
2026-06-20T03:13:21.3109645Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.3109735Z               "line": 5878
2026-06-20T03:13:21.3109816Z             },
2026-06-20T03:13:21.3109893Z             {
2026-06-20T03:13:21.3109993Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.3110074Z               "line": 5901
2026-06-20T03:13:21.3110155Z             },
2026-06-20T03:13:21.3110236Z             {
2026-06-20T03:13:21.3110335Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.3110421Z               "line": 5928
2026-06-20T03:13:21.3110503Z             }
2026-06-20T03:13:21.3110580Z           ]
2026-06-20T03:13:21.3110669Z         },
2026-06-20T03:13:21.3110801Z         "int": {
2026-06-20T03:13:21.3110897Z           "complete": false,
2026-06-20T03:13:21.3110986Z           "evidence": []
2026-06-20T03:13:21.3111071Z         },
2026-06-20T03:13:21.3111153Z         "unit": {
2026-06-20T03:13:21.3111248Z           "complete": true,
2026-06-20T03:13:21.3111320Z           "evidence": [
2026-06-20T03:13:21.3111400Z             {
2026-06-20T03:13:21.3111535Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T03:13:21.3111611Z               "line": 259
2026-06-20T03:13:21.3114497Z             },
2026-06-20T03:13:21.3114587Z             {
2026-06-20T03:13:21.3114726Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T03:13:21.3114807Z               "line": 657
2026-06-20T03:13:21.3114882Z             },
2026-06-20T03:13:21.3114959Z             {
2026-06-20T03:13:21.3115078Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T03:13:21.3115169Z               "line": 1107
2026-06-20T03:13:21.3115250Z             },
2026-06-20T03:13:21.3115346Z             {
2026-06-20T03:13:21.3115445Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.3115536Z               "line": 7565
2026-06-20T03:13:21.3115618Z             }
2026-06-20T03:13:21.3115699Z           ]
2026-06-20T03:13:21.3115783Z         }
2026-06-20T03:13:21.3115860Z       }
2026-06-20T03:13:21.3115938Z     },
2026-06-20T03:13:21.3116009Z     {
2026-06-20T03:13:21.3116107Z       "id": "REQ-WHOAMI-1",
2026-06-20T03:13:21.3117783Z       "title": "`spt whoami` is a thin ALIAS for `spt endpoint list` (full output: the SELF pin + the subnet roster) — the standalone bare-id command is dropped (the `id=$(spt whoami)` capture was never a real pattern: env vars don't persist between agent tool calls). The one new render: the `endpoint list` SELF pin carries the Self endpoint's authored `endpoint description` (info::read_info(...).resources) when present, inline after the liveness state. whoami stays a top-level hot-path verb (parse unchanged, REQ-MSG-9).",
2026-06-20T03:13:21.3118036Z       "requiredStages": [
2026-06-20T03:13:21.3118122Z         "doc",
2026-06-20T03:13:21.3118317Z         "impl",
2026-06-20T03:13:21.3118398Z         "unit"
2026-06-20T03:13:21.3118480Z       ],
2026-06-20T03:13:21.3118562Z       "stages": {
2026-06-20T03:13:21.3118636Z         "doc": {
2026-06-20T03:13:21.3118727Z           "complete": true,
2026-06-20T03:13:21.3118814Z           "evidence": [
2026-06-20T03:13:21.3118890Z             {
2026-06-20T03:13:21.3119069Z               "path": "CONTEXT.md",
2026-06-20T03:13:21.3119150Z               "line": 707
2026-06-20T03:13:21.3119233Z             }
2026-06-20T03:13:21.3119322Z           ]
2026-06-20T03:13:21.3119417Z         },
2026-06-20T03:13:21.3119494Z         "impl": {
2026-06-20T03:13:21.3119590Z           "complete": true,
2026-06-20T03:13:21.3119675Z           "evidence": [
2026-06-20T03:13:21.3119756Z             {
2026-06-20T03:13:21.3119857Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.3119948Z               "line": 3190
2026-06-20T03:13:21.3120032Z             },
2026-06-20T03:13:21.3120104Z             {
2026-06-20T03:13:21.3120214Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.3120295Z               "line": 3218
2026-06-20T03:13:21.3120371Z             }
2026-06-20T03:13:21.3120449Z           ]
2026-06-20T03:13:21.3120534Z         },
2026-06-20T03:13:21.3120610Z         "int": {
2026-06-20T03:13:21.3120695Z           "complete": false,
2026-06-20T03:13:21.3120778Z           "evidence": []
2026-06-20T03:13:21.3120863Z         },
2026-06-20T03:13:21.3120943Z         "unit": {
2026-06-20T03:13:21.3121025Z           "complete": true,
2026-06-20T03:13:21.3121111Z           "evidence": [
2026-06-20T03:13:21.3121196Z             {
2026-06-20T03:13:21.3121290Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.3121376Z               "line": 7847
2026-06-20T03:13:21.3121457Z             },
2026-06-20T03:13:21.3121542Z             {
2026-06-20T03:13:21.3121636Z               "path": "crates/spt/src/cli.rs",
2026-06-20T03:13:21.3121732Z               "line": 7900
2026-06-20T03:13:21.3121818Z             }
2026-06-20T03:13:21.3121904Z           ]
2026-06-20T03:13:21.3121989Z         }
2026-06-20T03:13:21.3122066Z       }
2026-06-20T03:13:21.3122147Z     }
2026-06-20T03:13:21.3122228Z   ],
2026-06-20T03:13:21.3122308Z   "findings": []
2026-06-20T03:13:21.3122376Z }
